Document document = new Document(reader.getPageSizeWithRotation(1));
PdfCopy writer = new PdfCopy(document, new FileOutputStream(outFile));
document.open();
PdfImportedPage page = writer.getImportedPage(reader, ++i);
writer.setFullCompression();
writer.addPage(page);
document.close();
writer.close();
我正在使用iText拆分和合并PDF,我需要您的帮助以编程方式减少(压缩)输出PDF大小。请让我知道实现相同目标的步骤。
答案 0 :(得分:6)
使用iText
PdfReader reader = new PdfReader(new FileInputStream("input.pdf"));
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("output.pdf"));
int total = reader.getNumberOfPages() + 1;
for ( int i=1; i<total; i++) {
reader.setPageContent(i + 1, reader.getPageContent(i + 1));
}
stamper.setFullCompression();
stamper.close();
答案 1 :(得分:5)
使用writer.setFullCompression()
,您已尽可能压缩文件。使用iText,你无法做更多的事情。
答案 2 :(得分:3)
同时将PdfCopy更改为PdfSmartCopy。它将消除具有相同散列(md5)的重复流。
答案 3 :(得分:0)
您可以使用ghostscript,使用特定参数调用exe来使用ghostscript的pdfwriter打印您的pdf(例如:sDEVICE = pdfwrite -sOutputFile = myfile.pdf)。有几个可接受的参数,用于压缩或质量水平等。 它可能会导致优化和更小的文件。