所以我在这个问题上花了一个多月的时间。我正在寻找一种提取几何元素的方法(多边形、文本、圆弧等)。从一个矢量化PDF由文件的OCG(可选内容组)组织,这基本上是PDF层。使用PDFminer,我能够提取几何学(LTCurves、LTTextBoxes、LTLines等);使用PyPDF2可以查看PDF中有多少OCG,尽管我无法访问与OCG相关的几何图形。我在网上看到和尝试过的一些恶意脚本可能能够解决这个问题,但没有效果。我甚至求助于在文本编辑器中打开原始的PDF数据,并半信半疑地删除其中的部分,看看我是否能够想出一些自定义的解析技术来完成这个任务,但同样没有效果。Adobe的PDF手册充其量是最低限度的,所以当我试图创建解析器时,这是没有帮助的。有没有人知道解决这个问题的办法。
在这一点上,我对任何语言的解决方案都是开放的,使用任何操作系统(虽然我更喜欢在Windows或Linux上使用Python 3的解决方案),只要它是开放源码/免费的。
这里有人能帮我结束这个黑暗的兔子洞吗?非常感谢!
发布于 2018-08-24 22:08:21
PDF文档包含两种“类型”的数据。文档中有一个面向对象的“结构”来将其划分为页面,并携带元数据(例如,有这个可选内容组列表),还有一个面向流的标记操作符列表,这些操作符实际上将内容“绘制”到页面上。
事实上,有OCG的,他们的名字,以及关于他们的一点存储在面向对象的内容上,并且可以很容易地通过解析对象内容来提取。但是OCG的成员没有存储在对象结构中。只有通过解析内容流才能找到它。一组标记操作员是特定OCG组的成员,当它被内容运算符/OC /optionacontentgroupname BDC预先执行,然后是操作员EMC。
解析内容流是一项不那么简单的任务。有很多工具可以帮你做到这一点。我自己也不会试图从头开始构建这样一个解析器。重写方向盘没有什么价值。
PDF的完整语法可从许多来源获得。在网上搜索"PDF规范1.7“或"ISO32000-1:2008”。这是一个令人生畏的文档,但它提供了创建和对象以及内容解析器所需的所有信息。
发布于 2019-08-26 10:18:45
发布于 2021-07-17 02:38:42
嘿,@pythonic_programmer,我可以使用这个python库pdflayers来禁用默认视图(可见/不可见)到新的pdf文件中。https://pypi.org/project/pdflayers/
这意味着禁用pdf文件中层的默认状态:https://helpx.adobe.com/acrobat/using/pdf-layers.html。
任何一层不可见,这意味着该层将不会呈现到pdf文档时,您处理(默认)。
https://stackoverflow.com/questions/51993507
复制相似问题