我正在尝试用Java压缩PDF文档。原始文件大小为1.5-2 MB,我们需要将其降低到不到1 MB。我尝试使用iText压缩,但结果不是那么有效,文件大小仍然大于1 MB。
byte[] mergedFileContent = byteArrayOS.toByteArray();
reader = new PdfReader(mergedFileContent);
PdfStamper stamper = new PdfStamper(reader, byteArrOScomp);
stamper.setFullCompression();
stamper.close();
reader.close();
有没有人在做类似的事情?任何投入都将受到赞赏。
答案 0 :(得分:2)
您可能需要查看官方的iText示例,特别是示例HelloWorldCompression是关于在初始PDF创建时和后处理步骤中应用不同程度的压缩。
该示例中的以下方法可以帮助您。
public void compressPdf(String src, String dest) throws IOException, DocumentException {
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest), PdfWriter.VERSION_1_5);
stamper.getWriter().setCompressionLevel(9);
int total = reader.getNumberOfPages() + 1;
for (int i = 1; i < total; i++) {
reader.setPageContent(i, reader.getPageContent(i));
}
stamper.setFullCompression();
stamper.close();
reader.close();
}
如果你想知道我是如何找到它的:我用google搜索&#34; itextpdf示例完全压缩&#34;这是第二个结果。 (第一个发现包含相同的方法,但不是来自官方的iText网站。)
答案 1 :(得分:0)
之后您可以gzip,zip等文件。它不是一种真正的PDF压缩格式,但如果你受到约束并想要更好的压缩,那么压缩整个事物可能会有很好的结果,因为它可以压缩元级数据。