【发布时间】:2014-06-05 08:25:35
【问题描述】:
在我的项目中,我想在 pdf 中找到图像的坐标。我尝试搜索 itext 和 pdfbox,但没有成功。使用这些坐标和提取的图像,我想验证提取的图像是否与数据库中存在的图像相同,图像的坐标是否与数据库中存在的相同。
【问题讨论】:
在我的项目中,我想在 pdf 中找到图像的坐标。我尝试搜索 itext 和 pdfbox,但没有成功。使用这些坐标和提取的图像,我想验证提取的图像是否与数据库中存在的图像相同,图像的坐标是否与数据库中存在的相同。
【问题讨论】:
当您说您已尝试使用 iText 时,我假设您已使用 ExtractImages 示例作为代码的起点。这个例子使用了辅助类MyImageRenderListener,它实现了RenderListener接口。
在那个辅助类中,renderImage() 方法是这样实现的:
public void renderImage(ImageRenderInfo renderInfo) {
try {
String filename;
FileOutputStream os;
PdfImageObject image = renderInfo.getImage();
if (image == null) return;
filename = String.format(path, renderInfo.getRef().getNumber(), image.getFileType());
os = new FileOutputStream(filename);
os.write(image.getImageAsBytes());
os.flush();
os.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
它使用ImageRenderInfo 对象获取PdfImageObject 实例,并使用该对象创建图像文件。
如果您检查 ImageRenderInfo 类,您会发现您还可以询问有关图像的其他信息。您需要的是 getImageCTM() 方法。此方法返回一个Matrix 对象。这个矩阵可以用普通的高中代数来解释。值 I31 和 I32 为您提供 X 和 Y 位置。在大多数情况下,I11 和 I22 会为您提供宽度和高度(除非图像被旋转)。
如果图像被旋转,您将不得不查阅您的高中教科书,更具体地说,是那些讨论解析几何的教科书。
【讨论】: