PDF压缩技术



我正在尝试用Java压缩PDF文档。原始文件大小为1.5-2MB,我们需要将其降低到1MB以下。我试着对它使用iText压缩,但结果不是那么有效,文件大小仍然大于1MB。

byte[] mergedFileContent = byteArrayOS.toByteArray();
reader = new PdfReader(mergedFileContent);
PdfStamper stamper = new PdfStamper(reader, byteArrOScomp);
stamper.setFullCompression();
stamper.close();
reader.close();

有人做过类似的工作吗?任何投入都将不胜感激。

您可能需要查看官方的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();
}

如果你想知道我是怎么找到的:我在谷歌上搜索了"itextpdf示例完全压缩",这是第二个结果。(第一个查找包含相同的方法,但不是来自iText官方网站。)

之后可以对文件进行gzip、zip等操作。它并不是真正的PDF压缩格式,但如果你受到限制,想要更好的压缩,那么压缩整个文件可能会有很好的结果,因为它可以压缩元级数据。

最新更新