小编psp*_*psp的帖子

使用itext java库复制时pdf文件大小大大增加

我正在尝试使用 Java 中的 itextpdf 库将现有的 pdf 文件复制到一些新文件中。我使用的是 itextpdf 5.5.10 版本。我在两种方式上都面临着不同的问题:PDFStamper 和 PdfCopy。当我使用 PDFStamper 类时,我观察到新文件大小大幅增加,尽管没有添加任何新项目。这是代码片段:

    String currFile="C:\misc\pdffiles\AcroJS.pdf" ;
    String dest = "C:\misc\pdffiles\AcroJS_copy.pdf" ;
    PdfReader reader = new PdfReader(currFile) ;
    PdfStamper stamper = new PdfStamper(reader,new FileOutputStream(dest)) ;
    stamper.close() ;
    reader.close() ;
Run Code Online (Sandbox Code Playgroud)

一些观察结果是:7 MB(原始)到 13 MB(大约,新文件),116 KB > 119 KB(大约)

当我复制现有的 pdf 文件时,我期望文件大小大致相同。我无法弄清楚为什么尺寸会增加那么多。

我也尝试过 PdfCopy 类。我使用 PdfCopy 遵循了两种方法:

  1. 一页一页地复制。
  2. 在 pdfcopy 对象上调用 setMergeFields() 然后调用 pdfcopy.addDocument(reader) ;

但这两种方法的问题在于,它会丢弃 pdf 文件中的一些非内容元数据,因此新的 pdf 在由 Adob​​e reader 打开时会被破坏。例如我的 pdf 包含字典对象 PdfName.S 。在这种情况下,新创建的 pdf 文件只有 2KB(原始文件为 1.6 MB),这显然意味着没有任何内容复制到文档中,并且它已损坏。 …

java pdf itext

4
推荐指数
1
解决办法
3595
查看次数

标签 统计

itext ×1

java ×1

pdf ×1