PDF管理控件Spire.PDF Java和.NET版5月同步上线!支持SVG图片转换 | 附下载

PDF文件格式转换处理控件Spire.PDF Java和.NET版5月同步更新,一起来看看有哪些新增功能吧!

近日,我们更新了.NET平台Spire.PDF v6.5.6 2020年5月更新,该版本支持添加和转换SVG图片到PDF,并修复了将PDF转换为Word、提取文本以及填充TextBoxField时出现的一些问题。

与此同时Java平台Spire.PDF迎来了5月的又一次更新,该版本支持PDF签名添加时间戳、设置在PDF页面是否显示签名信息以及绘制箭头、云朵、椭圆、矩形和连接线条形状等标记。另外,也修复了在提取PDF中的文本、将PDF转为图片时出现的一些问题,具体更新情况如下:

Spire.PDF For .NET更新内容

新功能

  • 支持添加SVG图片到PDF
    PdfDocument doc1 = new PdfDocument();doc1.LoadFromSvg(inputFile_svg);PdfDocument doc2 = new PdfDocument();doc2.LoadFromFile(inputFile_pdf);PdfTemplate template = doc1.Pages[0].CreateTemplate();template.Draw(doc2.Pages[0].Canvas, new PointF());doc2.SaveToFile(outputFile, FileFormat.PDF);

  • 支持转SVG图片到PDF
    PdfDocument doc = new PdfDocument();doc.LoadFromSvg("test.svg");doc.SaveToFile("result.pdf", FileFormat.PDF);

Bug修复

  • 优化了查找文本内存增长问题
  • 修复了转换PDF到Word文本位置不正确的问题
  • 修复了提取的文本内容不正确的问题
  • 修复了不能在XFASignatureField 已有域上签名的问题
  • 修复了获取的多变形注释位置不正确的问题/span>
  • 修复了提取文本抛出”Invalid/Unknown/Unsupported format”异常的问题
  • 修复了不能获取文档中的矩形注释的问题
  • 修复了指定区域提取的文本内容不正确的问题
  • 修复了填充TextBoxField表单间距不正确的问题

Spire.PDF For Java更新内容

新功能

  • 支持PDF签名添加时间戳
    //配置时间戳服务器String url = "https://freetsa.org/tsr";signature.configureTimestamp(url);
  • 支持设置在PDF页面上显示/不显示签名信息
    signature.addShowConfigureText(SignatureConfigureText.Contact_Info);//显示Contact_Info(默认显示所有)signature.removeShowConfigureText(SignatureConfigureText.Contact_Info);//不显示Contact_Infosignature.setShowConfigureText(EnumSet.of(SignatureConfigureText.Contact_Info));//只显示Contact_Info
  • 支持创建箭头、云朵、椭圆、矩形和连接线条形状的标记
    PdfDocument pdf = new PdfDocument();PdfPageBase page = pdf.getPages().add();//箭头String text1 = "this is Arrow annotation";PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 20);PdfSolidBrush brush1 = new PdfSolidBrush(new PdfRGBColor(Color.blue));PdfStringFormat leftAlignment = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);page.getCanvas().drawString(text1, font, brush1, 50, 50, leftAlignment);Dimension2D dimension = font.measureString(text1);Rectangle2D.Float bounds = new Rectangle2D.Float(50, 50, (float) dimension.getWidth(), (float) dimension.getHeight());int[] linePoints = new int[]{92, (int) (page.getSize().getHeight() - bounds.getY() - 60),        (int) (92 + bounds.getWidth()), (int) (page.getSize().getHeight() - bounds.getY() - 60)};PdfLineAnnotation annotation1 = new PdfLineAnnotation(linePoints, "LineArrow annotation test");annotation1.setBeginLineStyle(PdfLineEndingStyle.OpenArrow);annotation1.setEndLineStyle(PdfLineEndingStyle.OpenArrow);annotation1.setBackColor(new PdfRGBColor(Color.red));annotation1.setCaptionType(PdfLineCaptionType.Inline);annotation1.setLineCaption(true);((PdfNewPage) page).getAnnotations().add(annotation1);//云朵String text2 = "this is Cloud annotation";PdfBrush brush2 = PdfBrushes.getBlue();page.getCanvas().drawString(text2, font, brush2, 50, 200);Point2D point2D[] = new Point2D[]{        new Point2D.Float(30, 200),        new Point2D.Float(300, 180),        new Point2D.Float(300, 250),        new Point2D.Float(30, 220),        new Point2D.Float(30, 200)};PdfPolygonAnnotation annotation2 = new PdfPolygonAnnotation(page, point2D);annotation2.setText("PolygonCloud annotation test");annotation2.setAuthor("E-iceblue");annotation2.setSubject("test");annotation2.setModifiedDate(new Date());annotation2.setBorderEffect(PdfBorderEffect.Big_Cloud);annotation2.setLocation(new Point2D.Float(190, 230));annotation2.setColor(new PdfRGBColor(Color.GRAY));((PdfNewPage) page).getAnnotations().add(annotation2);//椭圆String text3 = "this is Circle annotation";PdfBrush brush3 = PdfBrushes.getBlue();Dimension2D dimension2D = font.measureString(text3);dimension2D.setSize(dimension2D.getWidth() + 35, dimension2D.getHeight() + 20);page.getCanvas().drawString(text3, font, brush3, 50, 300);Rectangle2D.Float annotationBounds1 = new Rectangle2D.Float();annotationBounds1.setFrame(new Point2D.Float(36, (float) 290), dimension2D);PdfSquareAndCircleAnnotation annotation3 = new PdfSquareAndCircleAnnotation(annotationBounds1);annotation3.setSubType(PdfSquareAndCircleAnnotationType.Circle);float[] f1 = {0.5f, 0.5f, 0.5f, 0.5f};annotation3.setRectangularDifferenceArray(f1);annotation3.setText("Circle annotation test");annotation3.setColor(new PdfRGBColor(Color.RED));annotation3.setModifiedDate(new Date());annotation3.setName("*****");LineBorder border1 = new LineBorder();border1.setBorderWidth(2);annotation3.setLineBorder(border1);((PdfNewPage) page).getAnnotations().add(annotation3);//矩形String text4 = "this is Square annotation";PdfBrush brush4 = PdfBrushes.getBlue();Dimension2D dimension4 = font.measureString(text4);dimension2D.setSize(dimension2D.getWidth() + 80, dimension2D.getHeight() + 20);page.getCanvas().drawString(text4, font, brush4, 50, 400);Rectangle2D.Float annotationBounds2 = new Rectangle2D.Float();annotationBounds2.setFrame(new Point2D.Float(30, (float) 400), dimension4);PdfSquareAndCircleAnnotation annotation4 = new PdfSquareAndCircleAnnotation(annotationBounds2);annotation4.setSubType(PdfSquareAndCircleAnnotationType.Square);float[] f2 = {0.5f, 0.5f, 0.5f, 0.5f};annotation4.setRectangularDifferenceArray(f2);annotation4.setText("Square annotation test");annotation4.setColor(new PdfRGBColor(Color.RED));annotation4.setModifiedDate(new Date());annotation4.setName("*****");LineBorder border2 = new LineBorder();border2.setBorderWidth(2);annotation4.setLineBorder(border2);((PdfNewPage) page).getAnnotations().add(annotation4);//连接线String text5 = "this is Connected lines annotation";PdfBrush brush5 = PdfBrushes.getBlue();page.getCanvas().drawString(text5, font, brush5, 50, 465);Point2D pointzd[] = new Point2D[]{        new Point2D.Float(30, 470),        new Point2D.Float(300, 450),        new Point2D.Float(300, 520),        new Point2D.Float(30, 490),        new Point2D.Float(30, 470)};PdfPolygonAnnotation annotation5 = new PdfPolygonAnnotation(page, pointzd);annotation5.setText("Connected Lines annotation test");annotation5.setAuthor("冰蓝");annotation5.setSubject("test");annotation5.setModifiedDate(new Date());annotation5.setBorderEffect(PdfBorderEffect.None);annotation5.setLocation(new Point2D.Float(190, 230));annotation5.setColor(new PdfRGBColor(Color.GRAY));((PdfNewPage) page).getAnnotations().add(annotation5);pdf.saveToFile("output/annotation.pdf");
  • 新增 optimizingTextLine 和 optimizingGridText参数优化从PDF页面提取表格文本时的文本格式
    for (PdfPageBase page : (Iterable) doc.getPages()) {    content.append(page.extractText(true,true,true));}

Bug修复

  • 修复了提取文本时,空格与源文档不一致的问题
  • 修复了设置“setCertificated(true)”不生效的问题
  • 修复了提取表格文本时,存在多余的空行的问题
  • 修复了调用“dispose()”方法后,“File.delete()”方法无法删除文件的问题
  • 优化了PDF转换到图片耗时较长的问题

标签:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年4月12日
下一篇 2020年4月12日

相关推荐

发表回复

登录后才能评论