【发布时间】:2015-02-20 08:36:34
【问题描述】:
问题
我正在使用 PDFBox 1.8.8 来操作现有的 PDF 文件。保存文档后,输出文件会比原始文件大几倍。这是不可取的。
如何减小输出文件的文件大小?
如何复制我的情况
在下面的代码中,PDFBox 只是加载一个现有的 PDF,然后保存它。没有做其他任何事情。但是文件大小仍然会变大几倍。
以下是两个示例输入文件的链接。对于 input1.pdf,文件大小从 6MB 增加到 50MB。对于 input2.pdf,文件大小从 0.4MB 增加到 1.3MB。
https://dl.dropboxusercontent.com/u/13566649/samplePDF/input1.pdf https://dl.dropboxusercontent.com/u/13566649/samplePDF/input2.pdf
import java.io.*;
import org.apache.pdfbox.pdmodel.*;
import org.apache.pdfbox.exceptions.*;
class Test {
public static void main(String[] args) throws IOException, COSVisitorException {
PDDocument document = PDDocument.load("input1.pdf");
document.save("output.pdf");
document.close();
}
}
我的尝试
我尝试过使用PDStream 类的addCompression() 方法,如下代码所示。它不会改变任何东西。输出文件大小还是一样的。
class Test2 {
public static void main(String[] args) throws IOException, COSVisitorException {
PDDocument document = PDDocument.load("input1.pdf");
for (int i = 0; i < document.getNumberOfPages(); i++) {
PDPage page = (PDPage) document.getDocumentCatalog().getAllPages().get(i);
page.getContents().addCompression();
}
document.save("output.pdf");
document.close();
}
}
【问题讨论】:
-
我建议您在 PDFBox JIRA 中打开一个问题并附加较小的文件。在初始文件中压缩了大量的“结构”信息,但在保存的文件中没有。
-
我的意思是对象流。
-
我为此创建了一个 JIRA 问题。 issues.apache.org/jira/browse/PDFBOX-2690
-
嗨!我也遇到了同样的问题,请问您找到解决方案了吗?我也尝试使用 PDStream.addCompression 但结果相同 :( 是否有另一个库可以更好地实现这种拆分?