如何使用java从pdf文档中读取或提取图形组件,如square,rect,line等?

我试图从使用iText生成的pdf文档中提取所有数据(如square,rect,line等)。但是我无法提取内容而不是文本和图像。我想提取图形组件上文提到的。

似乎有3个选项(至少那些是我能找到的),我不知道你到底有什么,所以我将粘贴所有3个,这些都在增加难度级别)

第一种选择:你可以这样做:(取自这里)

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,使用类似于此处显示的内容,然后使用JSoup处理HTML并迭代img标记,这就是我假设图像将被渲染的方式。

或者,你可以看看Hough Transform

霍夫变换是用于图像分析,计算机视觉和数字图像处理的特征提取技术。 该技术的目的是通过投票程序在某一类形状内找到不完美的对象实例。

OpenCV这样的映像库应该能够提供开箱即用的function( OpenCV-Java )作为这种库的Java包装器。

此示例应指向正确的方向。