用pdfbox压缩pdf的最佳解决方案是什么?

时间:2019-04-29 14:41:57

标签: java pdfbox

我有一个要保存的pdf文件,但是首先我必须以最佳质量压缩它,并且必须使用开源文件(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,到目前为止,仅压缩图像显示的效果略差。

1 个答案:

答案 0 :(得分:1)

压缩时。确实,图像可能是最大的罪魁祸首。

图像:图像大小(宽度和高度)也影响文件大小,而不仅是有损图像质量(您的COMPRESSION_FACTOR)。通常,我将从压缩 PDF以外的JPEG文件开始。然后,您可以找到最佳压缩率,该压缩率仍可以充分显示并打印(!)。最好使用封装的PostScript完成照片JPEG,矢量图形(如图表)。

重复的图像(如页面徽标)不应重复存储。这里的优化是互联网流。

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

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

此刻我不使用pdfbox,因此我将其留给您。