![]() |
1
16
从PDF文件中提取内容可能会有点复杂。我每天都做这件事,我想我能给你指出正确的方向。
它的工作方式是从目录开始,解析页面树。一旦识别了页面对象,就可以分析其内容和资源。资源字典包含页面使用的字体列表。每个CID字体对象都包含一个ToUnicode流,这是一个cmap(字符映射),它建立字形索引与其Unicode值之间的关系。例如:
这意味着glyph 01是Unicode U+0044,glyph 02是U+0061,依此类推。您必须使用这个查找表将glyph id转换回Unicode。
页面内容本身有两个重要的运算符。这个
另一个有趣的操作符是文本显示(通常
当然,我把这个过程过于简单化了,因为有几十种不同的标准编码、自定义编码(differential或ToUnicode),我们甚至没有接触过阿拉伯语、印地语、垂直日语字体、Type3字体等。有时文本根本无法提取,因为它是故意弄乱的。 |
![]() |
John V · 是否存在单元测试无法发现的逻辑/流错误类型? 7 年前 |
![]() |
Beefster · 为什么ANSI颜色转义以“m”而不是“]”结尾? 7 年前 |
![]() |
Guillermo Gutiérrez · STR转换是如何工作的? 7 年前 |
![]() |
RudziankoÅ · 合并排序数组算法 7 年前 |
|
user8852560 · 构造函数中的验证和构造函数冲突 7 年前 |
![]() |
jav974 · 订购产品时寻找最佳价格组合的算法 7 年前 |
![]() |
hippietrail · 确定浮点数中前导零的数量 7 年前 |