彩票走势图

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

原创|产品更新|编辑:李显亮|2020-05-15 09:55:53.100|阅读 264 次

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

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

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

下载Spire.PDF for .NET最新版

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

下载Spire.PDF for Java最新版

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 = "//freetsa.org/tsr";
    signature.configureTimestamp(url);
  • 支持设置在PDF页面上显示/不显示签名信息
    signature.addShowConfigureText(SignatureConfigureText.Contact_Info);//显示Contact_Info(默认显示所有)
    signature.removeShowConfigureText(SignatureConfigureText.Contact_Info);//不显示Contact_Info
    signature.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转换到图片耗时较长的问题

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP