我正在使用iText 5.5.4从Java创建PDF,它是一个很棒的库。
这不是问题或错误行为。这只是一个奇怪的事实,我正在努力理解。
我有一个三页的PDF,包括页眉,页脚,表格等。 它的大小是96KB。
我添加了带有950KB JPEG图像的第4页。它适合A4页面尺寸。 添加96KB + 950KB +第四页元数据+其他(页眉,页脚),我预计新PDF约为1.15MB
但最终尺寸为1.41MB
所以,我有这两个问题:
我坚持认为:行为是正确的。这只是我自己的好奇心。
非常感谢。
编辑:我无权分享图片。我将图像添加到PDF的代码是:public Document addNewElement(Document input, String imageFilename) throws DocumentException {
try {
input.newPage();
Image image = Image.getInstance(path + imageFilename);
input.add(image);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return input;
}
答案 0 :(得分:0)
使用iText缩放图像不会减少或增加图像的像素数。 PDF内部图像的大小与您使用的缩放系数无关。唯一改变的是感知分辨率。如果您有300 x 300像素的图片,并将其缩放到一英寸,则分辨率将为300 dpi。如果将其缩放到两英寸,则分辨率将降低,但图像字节的大小将保持不变。
添加图片时PDF大小的增加取决于图片类型。
阅读您的问题,我假设您正在添加JPEG,但文件的增加远远高于您的预期。我们应该看看原始PDF和您的代码,以给出一个确定的答案。我会猜一眼。假设使用PDF 1.5规范中引入的压缩(压缩对象+压缩的XRef表)压缩原始PDF,并且您没有告诉压模您希望最终结果使用该压缩,iText可能会创建一个PDF仅使用PDF 1.5之前的PDF规范中定义的压缩。这个原因与添加图像完全无关,但可能导致四分之一兆字节的差异。