Как конвертировать ęąśćżńł TXT в PDF с помощью enscript?

Вопрос или проблема

У меня проблема с преобразованием файла в PDF. Я создаю файл с помощью

echo ęąśćżńł > text

и преобразовываю:

enscript -O text -o - | ps2pdf - out.pdf

Однако, в out.pdf есть проблема с кодировкой:

снимок экрана поврежденного pdf файла

enscript просто не поддерживает Unicode. Вам необходимо использовать другой инструмент, такой как paps, для преобразования текста в PostScript. С опцией --header выводной .pdf похож на тот, что создается с помощью enscript:

$ paps text --header | ps2pdf - outheader.pdf

У меня был лучший опыт с программой u2ps, написанной Алексеем Суйковым, которая создает гораздо меньшие PDF файлы, используя системные Unicode шрифты. Эта программа не входит в Ubuntu или Fedora; её нужно скомпилировать самостоятельно. Использование такое же:

$ u2ps text.txt | ps2pdf - text.pdf

(По сравнению с u2ps, вывод paps получается огромным).

Обновление, февраль 2025:

Я написал более подробный пост о u2ps и его новой версии на C здесь.

Ответ или решение

Конвертация текста с национальными символами в PDF с использованием утилиты enscript может столкнуться с проблемами кодировки, особенно с символами, не поддерживаемыми стандартной латиницей. Возникновение таких проблем связано с тем, что enscript изначально не поддерживает кодировку Unicode. Рассмотрим решение этой проблемы более детально, применяя подход TEA (Теория, Пример, Применение).

Теория

enscript – это утилита для конвертации текстовых файлов в формат PostScript. Она обычно используется для отправки текстов на печать в структурированном виде. Однако, изначально enscript не поддерживает Unicode, что вызывает трудности при работе с текстами, включающими национальные символы, такие как польские (ę, ą, ś, ć, ż, ń, ł).

При конвертации текстов с такими символами в PDF через enscript, может наблюдаться замена этих символов на непонятные или некорректные аналоги, что и было продемонстрировано в примере.

Пример

Итак, мы пытаемся создать файл, содержащий польские символы, и конвертировать его в PDF следующим образом:

echo ęąśćżńł > text
enscript -O text -o - | ps2pdf - out.pdf

На выходе получаем файл out.pdf, в котором, как отмечено, присутствуют проблемы кодировки. На скриншоте видно, что текст показывает непонятные символы вместо ожидаемых польских символов.

Применение

Для решения этой проблемы можно использовать альтернативные инструменты, поддерживающие Unicode.

1. Использование paps

paps – это утилита для преобразования текстов в PostScript с поддержкой Unicode. Она принимает текстовый файл и генерирует корректный выходной PostScript файл, который затем может быть конвертирован в PDF.

Вот как это делается:

paps text --header | ps2pdf - outheader.pdf

Этот подход работоспособен, но может приводить к довольно крупным размерам файлов, что может быть критично в некоторых ситуациях.

2. Использование u2ps

u2ps – это менее известная, но более эффективная утилита для тех, кому важна компактность выходного файла. Она использует системные шрифты Unicode и предоставляет аналогичные возможности конвертации.

Для использования u2ps, вероятно, потребуется скомпилировать его из исходных кодов:

  • Сначала загрузите исходный код с официальной страницы u2ps.
  • Скомпилируйте и установите его на вашем компьютере, следуя инструкциям в документации.

После установки команда для конвертации будет выглядеть так:

u2ps text.txt | ps2pdf - text.pdf

Таким образом, это приведет к созданию PDF файла меньшего размера, сохраняя при этом корректную кодировку польских символов.

Заключение

Оба предложенных решения – paps и u2ps, способны устранить проблему кодировки, столкнувшись с которой мы начали наше обсуждение. Однако, важно учитывать, что paps генерирует большие файлы, в то время как u2ps требует дополнительных усилий для установки, но создает более компактные PDF.

Выбирая между этими методами, стоит учесть требования вашего проекта к производительности и размеру файлов. В контексте профессиональной среды, такие нюансы могут существенно повлиять на итоговое качество продукта, будь то документ для внутреннего пользования или публикация для широкого распространения.

Таким образом, данный подход к решению проблемы с кодировкой в PDF документах демонстрирует важность правильного подбора инструментов с учетом специфики задачи и позволяет избежать распространенных ошибок при работе с символами национальных алфавитов.

Оцените материал
Добавить комментарий

Капча загружается...