使用iText获取PDF文件中图像的DPI

3

我正在尝试通过iText(使用Java)获取保存在PDF文件中的扫描图像信息。

使用答案和评论,我通过Matrix或BufferedImage获得了宽度和高度。我的想法是使用这里的答案计算DPI,但我有点迷茫。

这些值(宽度和高度)是像素还是点?是否有其他方法可以实现这一点?有很多关于如何将图像缩放并保存到PDF文件的答案,但我没有找到任何关于如何读取图像的宽度/高度/比例并确信结果的答案。

2个回答

2
让我们将这个问题分成两个独立的问题。要计算DPI,您需要两组值:像素数和英寸中的距离。
  1. 像素数:您获取图像并且图像由像素组成。您可以从图像中检索像素宽度和高度。假设这些值为wPxhPx
  2. 英寸中的距离:您获取矩阵,其中包含以点表示的值。由于72个点等于1英寸,因此您需要将这些值除以72。假设这些值为wInchhInch
现在您可以按以下方式计算x方向上的DPI:wPx / wInch,并按以下方式计算y方向上的DPI:hPx / hInch

现在有意义了:图像是以像素为单位的,矩阵是以点为单位的,所以我需要两者,简单的除法就可以给我想要的结果,对吗? - Finik
是的。从矩阵中获取英寸很容易。从图像中获取像素可以用不同的方法完成,也可能取决于图像的类型。但是使用标准的java.awt类应该是可行的。 - Bruno Lowagie

0

我认为原始答案(回答于2014年8月28日)是针对iText 5的。 iText 7的新答案在此处:

以下是来自上面链接的信息:

现在你不需要自己计算DPI值了。iText 7中有一个名为ImageData的类,内置方法可以解决你的问题:

ImageData image = ImageDataFactory.create(IMG);
int x = image.getDpiX();
int y = image.getDpiY();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接