我正在使用 iText 将图像输出到 PDF 文件。图像总是比预期的大。根据这本书(iText in Action),这是因为 iText 始终以 72 dpi 的分辨率显示图像,而不管图像的实际 dpi 属性是什么。该书建议使用 image.getDpiX() 找到图像的 dpi,然后使用 image.scalePercent(72/actualDpi * 100) 正确显示图像。到目前为止,我所有图像的 getDpiX() 属性都返回了 0(我已经尝试了 2 个 gif 和 1 个 jpg)。还有另一种方法可以计算出实际的 DPI 以便我的图像正确缩放吗?
com.lowagie.text.Image graphic = com.lowagie.text.Image.getInstance(imgPath);
float actualDpi = graphic.getDpiX();
if (actualDpi > 0)
//Never gets here
graphic.scalePercent(72f / actualDpi * 100);
最佳答案
根据 com.lowagie.text.Image JavaDoc,方法 getDpiX 获取 X 方向上的每英寸点数。如果不可用,则返回零。
当 getDpiX 方法返回零时,您将不得不假设一个值。 100 dpi 是一个很好的假设。
if (actualDpi <= 0) actualDpi = 100f;
graphic.scalePercent(72f / actualDpi * 100f);
关于Java图像缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2905323/