私はAdobeDistiller6を使用してWordから印刷されたPDF(1.4)ファイルをたくさん持っています。フォントが埋め込まれ(LinuxマシンにあるTahomaとTimes New Roman)、エンコードには「ANSI」と「Identity-H」と表示されます。ANSIによると、地域のコードページはWindowsマシン(CP-1251(キリル文字))から使用されていると思います。「Identity-H」については、Adobeだけが知っていることだと思います。
テキストのみを抽出し、このファイルにインデックスを付けたい。問題は、からガベージ出力を取得することpdftotext
です。サンプルのPDFファイルをAcrobatからエクスポートしようとしましたが、再びガベージが発生しましたが、さらに処理すると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
再びゴミを捨てます。
/usr/share/poppler/unicodeMap
私はCP1251を持っていません、そしてグーグルでそれを見つけることができなかったので、それを作ってみました。ウィキペディアCP1251データからファイルを作成し、ファイルの最後に他のマップの内容を追加しました。
...
fb00 6666
fb01 6669
fb02 666c
fb03 666669
fb04 66666c
だからそれpdftotext
は文句を言わないが、結果として:
pdftotext -enc CP1251 sample.pdf -
再び同じゴミです。hexdump
一目で何も明らかにならないので、これから何かを必死に結論付けようとする前に、ここで私の問題について尋ねようと思いましたhexdumps