我有一堆使用 Adobe Distiller 6 从 Word 打印的 PDF (1.4) 文件。嵌入了字体(Tahoma 和 Times New Roman,我在我的 Linux 机器上拥有)并且编码显示为“ANSI”和“Identity-H”。现在通过 ANSI,我假设区域代码页是从 Windows 机器使用的,即 CP-1251(西里尔文),关于“Identity-H”,我假设这是只有 Adobe 知道的东西。
我只想提取文本并索引这些文件。问题是我从pdftotext
. 我试图从 Acrobat 导出示例 PDF 文件,但我再次得到垃圾,但另外处理iconv
得到了正确的数据:
iconv -f windows-1251 -t utf-8 Adobe-exported.txt
但同样的技巧不适用于pdftotext
:
pdftotext -raw -nopgbrk sample.pdf - | iconv -f windows-1251 -t utf-8
默认情况下采用 UTF-8 编码,然后输出一些垃圾:Сiconv: illegal input sequence at position 77
pdftotext -raw -nopgbrk -enc Latin1 sample.pdf - | iconv -f windows-1251 -t utf-8
再次扔垃圾。
我没有CP1251 /usr/share/poppler/unicodeMap
,用谷歌找不到,所以试着做一个。我从 wikipedia CP1251 数据创建了文件,并在文件末尾附加了其他地图的内容:
...
fb00 6666
fb01 6669
fb02 666c
fb03 666669
fb04 66666c
所以这pdftotext
不会抱怨,而是源于:
pdftotext -enc CP1251 sample.pdf -
又是同样的垃圾。hexdump
乍一看并没有透露任何东西,我想在这里问一下我的问题,然后拼命地试图从中得出一些结论hexdumps