在我的项目中,我想找到pdf中的图像坐标。我尝试搜索itext和pdfbox,但我没有成功。使用这些坐标和提取的图像,我想验证提取的图像是否与数据库中存在的图像相同,图像的坐标与数据库中的相同。
答案 0 :(得分:1)
当您说您尝试使用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
会为您提供宽度和高度(除非图像被旋转)。
如果图像被旋转,您必须咨询您的高中教科书,更具体地说是讨论分析几何图形的教科书。