我正在尝试从使用 iText 生成的 pdf 文档中提取所有数据(例如正方形、矩形、直线等)。但是我无法提取内容而不是文本和图像。我想提取上面提到的图形组件。
最佳答案
似乎有3个选项(至少这些是我能找到的),我不知道你到底有什么,所以我将粘贴所有3个,这些是在增加难度)
第一个选项:您可以这样做:(取自 here)
PDDocument document = null;
document = PDDocument.load(inFile);
List pages = document.getDocumentCatalog().getAllPages();
Iterator iter = pages.iterator();
while (iter.hasNext()) {
PDPage page = (PDPage) iter.next();
PDResources resources = page.getResources();
Map pageImages = resources.getImages();
if (pageImages != null) {
Iterator imageIter = pageImages.keySet().iterator();
while (imageIter.hasNext()) {
String key = (String) imageIter.next();
PDXObjectImage image = (PDXObjectImage) pageImages.get(key);
image.write2OutputStream(/* some output stream */);
}
}
}
第二个选项可能是将 PDF 文档转换为 HTML,使用类似于 here 所示的内容。然后,使用 JSoup
处理 HTML 并迭代 img
标签,这就是我假设图像将被渲染的方式。
或者,您可以查看 Hough Transform
:
The Hough transform is a feature extraction technique used in image analysis, computer vision, and digital image processing. The purpose of the technique is to find imperfect instances of objects within a certain class of shapes by a voting procedure.
图像库,例如 OpenCV
作为此类库的 Java 包装器,应该能够产生开箱即用的此类功能 ( OpenCV-Java
)。
This示例应该会为您指明正确的方向。
关于java - 如何使用java从pdf文档中读取或提取图形组件,例如正方形,矩形,直线等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19441977/