У меня есть несколько файлов PDF (1.4), напечатанных из Word с помощью Adobe Distiller 6. Шрифты встроены (Tahoma и Times New Roman, которые есть на моем компьютере с Linux), а кодировка говорит «ANSI» и «Identity-H».».Теперь, согласно ANSI, я предполагаю, что региональная кодовая страница используется с компьютера с Windows, то есть CP-1251 (кириллица), а в отношении «Identity-H» я предполагаю, что об этом знает только Adobe.
Iхочу извлечь только текст и проиндексировать эти файлы.Проблема в том, что я получаю вывод мусора из 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, и я не смог найти его в Google, поэтому попытался его создать.Я создал файл из данных CP1251 из Википедии и добавил в конце файла то, что имели другие карты:
...
fb00 6666
fb01 6669
fb02 666c
fb03 666669
fb04 66666c
, чтобы pdftotext
не жаловался, а был результатом:
pdftotext -enc CP1251 sample.pdf -
опять тот же мусор.hexdump
ничего не показывает с первого взгляда, и я подумал спросить о моей проблеме здесь, прежде чем отчаянно пытаться что-то сделать из этого hexdumps