我正在使用PDFBox 2.0.8替换应用程序中的图像。我能够提取图像并将其替换为另一个具有相同尺寸的图像。但是,如果图像尺寸减小,则PDF尺寸不会减小。例如,请参考以下链接中的文档/图像。 PDF的原始大小为93 KB。提取的图像为91 KB。替换的图像是54 KB。替换图片后的PDF大小仍为92 KB。...
替换后PDF的大小变化比例不同...用于图像替换的代码段为
BufferedImage buffered_replacement_image_file = ImageIO.read(new File(replacement_image_file));
PDImageXObject replacement_img = JPEGFactory.createFromImage(doc, buffered_replacement_image_file);
resources.put(xObjectName, replacement_img);
答案 0 :(得分:0)
两个示例PDF中的图像相同。这很可能是由于您加载图像数据的方式所致,首先是从文件中创建一个BufferedImage
,然后是从该PDImageXObject
中创建一个BufferedImage
。这会导致输入图像数据被扩展为纯位图,然后由JPEGFactory.createFromImage
相同地重新压缩为JPEG。
要按原样使用JPEG数据,请尝试以下方法:
PDImageXObject replacement_img = JPEGFactory.createFromStream(doc, new FileInputStream(replacement_image_file));
resources.put(xObjectName, replacement_img);
或者,如果replacement_image_file
不一定是JPEG文件,则像这样
PDImageXObject replacement_img = PDImageXObject.createFromFileByExtension(new File(replacement_image_file), doc);
resources.put(xObjectName, replacement_img);
如果这没有帮助,则您的代码中也很可能还有其他问题,需要显示更多问题。