3

Я использую pdftotext чтобы сделать ASCII-версию PDF-документа (сделанного с LaTeX), потому что соавторы предпочитают простой документ в MS Word.

Текстовая версия, которую я вижу, выглядит хорошо, но при ближайшем рассмотрении символ f, кажется, часто неправильно преобразовывается в зависимости от того, какие символы следуют. Например, fi и fl часто кажутся одним специальным символом, который я постараюсь вставить здесь: if и fl.

Каков наилучший способ очистить вывод pdftotext? Я думаю, что sed может быть правильным инструментом, но я не уверен, как обнаружить эти специальные символы.

2 ответа2

3

По умолчанию pdftotext выводит данные Unicode (UTF-8). Если ваш терминал или текстовый редактор не поддерживает UTF-8, то, как вы заметили, лигатуры, такие как "fi" и "fl" (которые могут быть представлены в Unicode как один символ), будут выглядеть странно.

Простое решение состоит в том, чтобы сказать pdftotext выводить ASCII вместо unicode:

pdftotext -enc ASCII7 input.pdf output.txt

Это должно привести к чистому выводу ASCII, избавляя вас от необходимости впоследствии очищать его вручную.

1

Предполагая, что вы работаете в какой-то системе на основе Unix, вы можете запустить это на выходе pdftotext:

sed -i -e 's/ffi/ffi/g' -e 's/fi/fi/g' -e 's/ff/ff/g' -e 's/fl/fl/g' -e 's/ffl/ffl/g' output.txt

Это должно заменить лигатуры отдельными буквами, на которые они разбиваются. (См. Мои комментарии выше для того, что лигатуры имеют отношение к этому.)

Я проверил это в текстовом файле, созданном с помощью pdftotext из PDF, созданного LaTeX. И это работало нормально. Но если LaTeX использовал нестандартную кодировку или шрифт с дополнительными лигатурами, возможно, еще многое предстоит сделать.

Возможно, вы захотите убедиться, что шрифт, который вы используете в своем терминале, содержит символы для лигатур серии f. DejaVu Sans Mono - хороший выбор.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .