我需要创建带有图像的pdf进行打印。我正在使用iText为pdf添加高分辨率图像。它将质量降低到72 DPI。 打印后导致图像质量不佳。
原始图像分辨率为2549 * 3304和DPI(300)。
我尝试了以下选项
image.scaleAbsolute(2549*.24 ,3304*.24 );
image.setDpi(300,300);
image.scaleToFit(2549*.24 ,3304*.24 );
当前代码如下所示
Document document = new Document(PageSize.LETTER);
document.open();
Image image = Image.getInstance("C:/Project/bg.png");
image.setAbsolutePosition(0,0);
image.scalePercent(24);
document.add(image);
document.close();
我经历了一些线程(Adding an image to a PDF using iTextSharp and scale it properly)仍然无法解决问题
有人可以帮我解决这个问题,以便在打印时获得更好的图像质量吗?
答案 0 :(得分:1)
setDpi()
方法与您的代码无关,原始图像的DPI也是如此。像素在iText中被视为点。这意味着按原样添加图像将导致每英寸72像素。
您可以将图像缩放到原始大小的24%。这意味着您可以提高分辨率:仅使用24%的空间显示相同数量的像素。在这种情况下,您显示分布在611.76点的2549像素。这大约是8.5英寸,这意味着你确实有300 DPI的分辨率。
我认为问题不是由PDF内部图像的分辨率引起的(但由于我们无法检查PDF,因此很难说清楚)。我认为问题是由使用与PDF中的分辨率不同的分辨率打印文档的打印过程引起的。
在任何情况下:如果您使用方法scalePercent()
,scaleAbsolute()
或scaleToFit()
,iText不会减少像素数。
基于评论的额外信息:
要求PDF提供其解决方案"没有意义,因为PDF没有任何分辨率(尽管PDF中的图像可能有一个)。我不知道为什么Photoshop告诉你分辨率是72 DPI。也许这是一个默认值,因为PDF中的测量单位对应一个点,一英寸有72个点。
我查看了您分享的PDF。当我在屏幕上看到它时,我看不到任何分辨率的损失。我可以看到该文件的尺寸为8.5×11英寸。至于图像,请查看Acrobat生成的报告:
它表示宽度/高度:2550/3300像素。
2550 / 8.5 = 300
3300/11 = 300
因此分辨率为每英寸300像素。或者:PDF完全按照您希望的方式创建。
但是:您说打印文档时分辨率更差。这可能是由许多不同的事情引起的:也许您在大于8.5 x 11英寸的页面上打印,也许打印机无法以该分辨率打印,也许PDF查看器只能使用&打印#34;降级打印",...
我的建议是,您可以使用不同的查看器在不同的打印机上测试此PDF,以找到罪魁祸首。