6

在使用 pdfminer (pdf2txt.py)处理文件时,我收到了空输出:

dan@work:~/project$ pdf2txt.py  docs/homericaeast.pdf 

dan@work:~/project$ 

谁能说这个文件有什么问题以及我可以做些什么来从中获取数据?

这是dumppdf.py docs/homericaeast.pdf输出:

<trailer>
<dict size="4">
<key>Info</key>
<value><ref id="2" /></value>
<key>Root</key>
<value><ref id="1" /></value>
<key>ID</key>
<value><list size="2">
<string size="16">on&#10;&#164;&#181;F&#164;5&#193;&#62;&#243;_&#253;v&#172;`</string>
<string size="16">on&#10;&#164;&#181;F&#164;5&#193;&#62;&#243;_&#253;v&#172;`</string>
</list></value>
<key>Size</key>
<value><number>27</number></value>
</dict>
</trailer>

<trailer>
<dict size="4">
<key>Info</key>
<value><ref id="2" /></value>
<key>Root</key>
<value><ref id="1" /></value>
<key>ID</key>
<value><list size="2">
<string size="16">on&#10;&#164;&#181;F&#164;5&#193;&#62;&#243;_&#253;v&#172;`</string>
<string size="16">on&#10;&#164;&#181;F&#164;5&#193;&#62;&#243;_&#253;v&#172;`</string>
</list></value>
<key>Size</key>
<value><number>27</number></value>
</dict>
</trailer>
4

2 回答 2

4

现在我已经解决了与/OneByteIdentityH两字节 unicode 映射的代码类似的问题/Identity-H。补丁在PR #179

于 2017-05-13T23:06:06.960 回答
2

问题是pdfminer不理解您在此 PDF 中使用的 CMap。

如果您在其中打开了 pdfminer 的自定义构建,STRICT=1psparser.py将收到如下错误:

pdfminer.psparser.PSTypeError: Literal required: <PDFStream(21): raw=267, {u'Filter': /'FlateDecode', u'CMapName': /u'OneByteIdentityH', u'Type': /u'CMap', u'CIDSystemInfo': <PDFObjRef:20>, u'Length': 266}>

我对代码不是很熟悉,但即使允许它通过也无济于事,因为它无法识别映射(即使我将名称硬编码OneByteIdentityH并要求它查找)。最终结果是 CMap 不包含任何映射,因此它将 PDF 中的每个字符转换为空字符串(None如果我很挑剔的话)。

修复可能是为此 CMap 创建一个映射,该映射仅返回传入的字符,类似于已经实现的其他身份映射cmapdb.py

于 2017-05-12T17:21:18.003 回答