【问题标题】:What is the best solution to compress PDF with PDFBox?用 PDFBox 压缩 PDF 的最佳解决方案是什么?
【发布时间】:2019-04-29 14:41:57
【问题描述】:

我有一个 PDF 文件要保存,但首先我必须以尽可能高的质量对其进行压缩,并且我必须使用开源库(如 Apache PDFBox®)。

所以,到目前为止,我所做的只是获取所有图像类型的资源,将它们压缩并放回 PDF 中,但压缩率很低。这只是我分配压缩参数的代码片段:

PDImageXObject imageXObject = (PDImageXObject) pdxObject;

ImageWriter imageWriter = ImageIO
      .getImageWritersByFormatName(FileType.JPEG.name().toLowerCase()).next();

ImageWriteParam imageWriteParam = imageWriter.getDefaultWriteParam();
imageWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
imageWriteParam.setCompressionQuality(COMPRESSION_FACTOR);

还有一些其他机制可以优化 PDF,目前仅压缩图像显示效果稍差。

【问题讨论】:

    标签: java pdfbox


    【解决方案1】:

    关于压缩。事实上,图像可能是最大的罪魁祸首。

    图像:图像大小、宽度和高度也会影响文件大小,而不仅仅是有损图像质量(您的 COMPRESSION_FACTOR)。一般来说,我会先在 PDF 之外压缩 JPEG 文件。然后你可以找到最好的压缩,仍然可以充分显示和打印(!)。照片 JPEG、矢量图形(如图表)最好使用 Encapsulated PostScript。

    不应重复存储页面徽标等重复图像。这里的优化是互联网流媒体。

    字体: 默认字体不需要空间,完整字体需要最大空间(例如,对于带有表单的 PDF)。嵌入字体是第三种可能性,只加载需要的符号。

    PDF 自己的二进制数据: 文本和其他部分可以解压缩,仅使用 7 位 ASCII 压缩,然后使用所有字节进一步压缩。 ASCII 选项有点过时了。

    目前我没有使用 pdfbox,所以我把它留给你。

    【讨论】:

    • 感谢您的回答,我会考虑您的笔记并根据它们进行处理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多