【发布时间】:2018-08-28 15:57:13
【问题描述】:
在使用iText 新创建的 PDF 文件中减小 JPEG 图像大小的最佳做法是什么? (我的目标是在图像质量和文件大小之间进行权衡。)
图像创建如下:
Image image = new Image(ImageDataFactory.create(imagePath))
我想提供一个比例因子,例如0.5,它将一行中的像素数减半。
假设我生成了一个包含单个 3 MB 图像的 PDF。我尝试了image.scale(0.5f, 0.5f),但生成的 PDF 文件仍约为 3 MB。我预计它会变得更小。
因此,我猜测嵌入在 PDF 文件中的源图像没有被触及。但这正是我需要的:应该减少存储在磁盘上的整个 PDF 文件中的总像素数。
实现这一目标的最简单/推荐的方法是什么?
【问题讨论】:
-
image.scale等不会更改位图数据,它们只会更改图像在 PDF 中的尺寸。 -
每当你提供赏金时,你应该更清楚地表明你的期望。特别是@Ben的回答在哪方面不可信?
-
这并不容易(与 iText 的使用相比)。生成的图像的图像质量可能会更好(例如,使用 GIMP 使用相同数量的像素可以获得更好的结果)。结果不是 JPEG,因此与我的文件大小更小的目标相反。结果格式不是由输入格式决定的。我正在为一个常见的问题寻找一个简单、万无一失和直接的解决方案。
-
好的。不过,我建议您稍微修改一下您的问题:iText 本身不包含缩小位图图像数据的功能,它明智地希望您使用专门用于位图图像处理的软件。因此,您应该重新制定问题以在java 中询问image-compression image-processing 选项,特别是缩小jpeg bitmap 图像并使用这些建议的标签。这个问题听起来不应该太像软件建议的请求,因为现在那些被认为是堆栈溢出的题外话。
标签: java pdf itext pdf-generation itext7