Вопрос:

Как конвертировать TXT в PDF с UTF-8?

pdf-generation postscript enscript

10 просмотра

1 ответ

1531 Репутация автора

Я использую следующую команду для преобразования TXT в PS. Затем конвертировать PS в PDF.

enscript --header='Page $% of $=' --word-wrap -o output.ps 2>/dev/null < input.txt

Но это не работает для ввода utf-8.

enscript --header='Page $% of $=' --word-wrap -o output.ps 2>/dev/null <<< ℃

Приведенная выше команда приводит â\204\203к выходному файлу.

Я вижу обсуждения, говорящие, что enscriptне поддерживает utf-8. Кажется, есть несколько альтернатив, которые конвертируют TXT в PDF. Но не ясно, какой из них является наиболее надежным и удобным в использовании. Кто-нибудь знает лучшее решение этой проблемы?

Автор: user1424739 Источник Размещён: 11.08.2019 02:54

Ответы (1)


0 плюса

23480 Репутация автора

Решение этого вопроса как вопроса программирования, а не запроса рекомендации программного обеспечения (что было бы не по теме).

Вы не можете использовать UTF-8, или, по крайней мере, не просто. PostScript вообще не поддерживает UTF-8 напрямую. Тем не мение....

Поскольку PostScript является языком программирования, вы можете написать программу, которая проверяет первый байт последовательности UTF-8, чтобы увидеть, является ли он символьным кодом или кодом, указывающим дополнительные байты. По сути, отмена кодирования для получения кодовой точки Unicode.

Оттуда со списком имен глифов и кодовых точек Unicode вы можете создать шрифт с пользовательской кодировкой, и вместо записи UTF-8 в программу PostScript записать один байт, который отображает код символа через кодировку на соответствующее название глифа.

Или вы можете определить CIDFont, а затем создать CMap, который отображает последовательности байтов переменной длины UTF-8 в CID для ссылки на правильный глиф из шрифта. Во IIRC уже есть CMAP UTF-16, фактически Adobe предлагает несколько доступных здесь, которые также включают версии UTF-18 и UTF-32 для различных языков CJKV.

Имейте в виду, что хотя эти подходы будут создавать PostScript, который правильно отображает, а затем может быть использован для создания PDF-файла, который отображается правильно, будет невозможно скопировать / найти полученный PDF-файл.

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

Автор: KenS Размещён: 11.08.2019 08:47
32x32