减少ITextPDF中的图像大小(字节)

我正在使用itext PDF库在Java中构建一个图像密集型的PDF文档。 每个页面上都有十几张图片。 原始源图像的分辨率非常高,我使用scaleToFit将图像渲染到我需要的大小。

我遇到的问题是PDF文档仍然很大。 我的理解是包含整个原始高分辨率图像,我使用的缩放仅影响实际渲染,而不影响文件中包含的图像的大小。

我通过删除缩放来validation这一点 – 页面是在高分辨率图像彼此重叠和页面边缘的情况下渲染的,并且PDF与缩放到位时的大小相同。

那么,这就是问题 – 如何通过缩小每个图像来减小PDF文件的大小? 如果我失去了一点图像质量,那就没关系。 手动重新调整源图像将很困难。

所以我找到了一种方法。 我现在将图像加载到BufferedImage ,然后使用此处的提示进行缩放 : 如何缩放BufferedImage 。

这给了我一个BufferedImage – 我然后使用它将其转换为iText图像

  Image returnedImage = Image.getInstance ( pcb, bufferedImage, quality ); 

quality目前为0.6。 这对我正在做的工作是可以接受的。