从PDF中读取字体颜色信息
我正在开发一款软件,可以分析PDF文件并根据这些文件生成HTML。市面上已经有很多类似的工具,所以我知道这是可行的,但由于业务原因,我必须自己写一个。
我已经成功提取了PDF中的所有文本信息、位置和字体,但我在读取文本颜色方面遇到了困难。目前我在使用PDFMiner来分析PDF,但我开始觉得可能需要自己写一个PDF阅读器。即便如此,我还是搞不清楚文档中关于文本颜色的信息到底存放在哪里!我甚至看过PDF的规范,但还是找不到我需要的信息。
我在谷歌上搜索了很多次,但都没有找到解决办法。
提前谢谢大家!
1 个回答
5
在PDF文件中,文本和其他填充图形的颜色是通过使用g
、rg
或k
这些操作符来设置的,这些内容可以在PDF参考手册的4.5.7 颜色操作符部分找到。
参考手册中的例子G.3 简单图形示例展示了如何使用这些操作符来描边和填充一些形状(但不包括文本)。
http://www.adobe.com/devnet/pdf/pdf_reference.html
如果你想自己解析一个PDF文件,首先要从文件末尾读取trailer部分,这里包含了交叉引用表的文件偏移量。这个表里记录了PDF文件中每个对象的文件偏移量。这些对象是以树状结构排列的,并且相互之间有引用关系。其中一个对象就是内容流。这些内容在PDF参考手册的3.4 文件结构和3.6 文档结构部分有详细描述。
虽然可以自己解析PDF文件,但这工作量相当大。内容流可能被压缩,可能包含对其他对象的引用,还可能有注释等等,你需要处理这些情况。
PDFMiner软件已经能够读取内容流,也许扩展PDFMiner来报告文本的颜色会更简单一些呢?