Я использую pdftotext
сделать версию ASCII документа в формате PDF (сделанной с ЛАТЕКСОМ), потому что сотрудники предпочитают простой документ в MS Word.
Версия простого текста я вижу хорошие взгляды, но после более близкого контроля f символ, кажется, часто неправильный преобразовывается в зависимости от того, за чем следуют символы. Например, fi и fl часто, кажется, становятся одним специальным символом, который я попытаюсь вставить здесь: fi и fl.
Что лучший способ состоит в том, чтобы очистить вывод pdftotext? Я думаю sed
мог бы быть правильный инструмент, но я не уверен, как обнаружить эти специальные символы.
По умолчанию, pdftotext
выводы unicode (UTF-8) данные. Если Ваш терминальный или текстовый редактор не будет поддерживать UTF-8, лигатуры, такие как "fi" и "fl" (который может быть представлен как отдельный символ в unicode), то появится странно, как Вы заметили.
Простая фиксация должна сказать pdftotext
производить ASCII вместо unicode:
pdftotext -enc ASCII7 input.pdf output.txt
Это должно произвести чистый вывод ASCII, устранив Вашу необходимость очистить его вручную впоследствии.
Принятие Вас находится в некоторой Основанной на 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. И это хорошо работало. Но если ЛАТЕКС использовал нестандартное кодирование или шрифт с дополнительными лигатурами может быть больше, чтобы сделать.
Вы, вероятно, захотите удостовериться шрифт, который Вы используете в своем терминале, имеет символы для f-серийных лигатур. DejaVu Sans Mono является хорошим выбором.