Генерация pdf из командной строки
Oct. 27th, 2014 04:02 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Интересно, чем бы таким опенсурсным и не использующим X-овых библиотек (headless, серверным) можно в наше время генерировать PDF-документы, содержащие в основном обычный текст с минимальными шрифтовыми выделениямии (уровня примерно HTML 2.0 - заголовки двух-трех уровней, пара видов логического выделения в тексте, 2-3 вида списоков).
Но чтобы нормально работало по меньшей мере со всем Basic Multilingual Plane юникода (входной формат - что-то в utf-8).
Варианты на базе pdftex не предлагать. Про них и лежащие там грабли сам знаю.
Варианты на базе xelatex или luatex готов посмотреть, если мне убедительно объяснят, что вот здесь все хорошо, и будет работать со всеми буковками, которые есть в шрифте DejaVuSans, LiberationSerif или что там оно испольузе
В принципе, сейчас библиотеки для создания pdf есть во всех подряд языках. Но вот попробовал питоновскую (которая reporlab, вернее командно-строчная обертка вокруг неё - rst2pdf) не тянет кириллицы совсем. Это я еще не злобствую, и не подсовываю туда right-to-left письменности.
То что у libreoffice есть headless-режим я знаю.
Про apache fop с удовольствием бы послушал рассказы тех, кто щупал.
Но чтобы нормально работало по меньшей мере со всем Basic Multilingual Plane юникода (входной формат - что-то в utf-8).
Варианты на базе pdftex не предлагать. Про них и лежащие там грабли сам знаю.
Варианты на базе xelatex или luatex готов посмотреть, если мне убедительно объяснят, что вот здесь все хорошо, и будет работать со всеми буковками, которые есть в шрифте DejaVuSans, LiberationSerif или что там оно испольузе
В принципе, сейчас библиотеки для создания pdf есть во всех подряд языках. Но вот попробовал питоновскую (которая reporlab, вернее командно-строчная обертка вокруг неё - rst2pdf) не тянет кириллицы совсем. Это я еще не злобствую, и не подсовываю туда right-to-left письменности.
То что у libreoffice есть headless-режим я знаю.
Про apache fop с удовольствием бы послушал рассказы тех, кто щупал.
no subject
Date: 2014-10-27 01:45 pm (UTC)Мне нужен весь BMP, то есть по крайней мере вся латиница (включая польский и исландский), греческий и нормальная пунктуация, и это в одном документе с кириллицей.
Пробовать даже не интересно, по причине отсутсрвия документов, которые можно было бы без потерь сконвертить в 8-битную кодировку.
Хотя вот нет - попробовал и убедился, что cp1251 Оно только делает вид, что понимает.
no subject
Date: 2014-10-27 02:04 pm (UTC)А тестовый файлик в UTF-8 можно?
Date: 2014-10-27 07:23 pm (UTC)Ну и при этом мелочи типа лигатур st, Th и Qu, как и прочий выпендрёж шрифта, работают вполне спокойно (некоторые можно включать и отключать).
Взял свой тупой заголовок по умолчанию с DejaVu Serif и ещё 10 строчками usepackage. Нормально отрисовалось:
English text.
La langue française.
Русский язык.
Ελληνικά γλώσσα.
Ĉi estas esperanto.
Polish ł.
Islandic Æ.
А вот арабскю вязь DejaVu Serif не нарисовал сходу. Надо тестировать вместе со шрифтом.
Ну и да, XeLaTeX большой и неясно, насколько выполнимо его поставить без freetype (ибо откуда-то он метрики шрифта брать должен).
Re: А тестовый файлик в UTF-8 можно?
Date: 2014-10-27 08:31 pm (UTC)А как выглядит этот заголовок?
Re: А тестовый файлик в UTF-8 можно?
Date: 2014-10-28 06:28 am (UTC)Вот как было:
Потом попробовал по-другому:
Работает (но типографские правила, вероятно, анмериканские, без polyglossia-то, которая замена babel).
Вероятно, для арабского понадобится делать что-то типа установки шрифта перед куском текста, вроде \fontspec{Linux Libertine O},
а для переносов может и \selectlanguage быть нужно при сменах языка.
Можно попробовать применить fontforge MergeFonts, чтобы в преамбуле прописать только один шрифт (объединённый).
Конкретный текст с кокнкретными шрифтами могу протестировать.