java - 如何使用java从pdf文档中读取或提取图形组件,例如正方形,矩形,直线等?

标签 java pdf-generation itext graphics2d xml-generation

我正在尝试从使用 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/

相关文章:

Java EE 依赖本地 EJB

c# - 合并在 PDF 中多次使用的同一图像

javascript - 将 Canvas 转换为 PDF

android - 如何在 Android 上使用 iText 或其他库创建 PDF 文件?

java - 如何从 PDF 中删除表单元素

带有公钥/私钥的java-jwt

java - CNAME 和 cookie

Java 树错误

java - 获取页面信息时出现 NullPointerException

java - 新行中的 PDF 格式的 ArrayList<String>