Генерация 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-12-12 10:03 pm (UTC)файл /usr/share/fop/conf/userconfig.xml
Не получается вставить xml - вот пример http://pastebin.com/YeSGQKya
И в XLS-FO файле: <fo:block font-family="sans-serif" font-size="24pt" font-weight="bold" >Тест </fo:block>
XML файлы для шрифтов создаются при помощи
java -classpath "<тут fop.jar + остальные>" org.apache.fop.fonts.apps.TTFReader font.ttf font.xml
Не знаю как сейчас, но в старых версиях FOP не умел right-to-left тест - для иврита приходилось переворачивать строки самому используя libfribidi.
А еще есть PrinceXML, он не опенсорс но free for non-commercial use. Конвертируем HTML в PDF, понимает CSS и JavaScript.
Идет в виде статически-слинкованного бинарника и не требует X.
Бесплатная версия добавляет маленький логотип в угол страницы.
no subject
Date: 2014-12-13 10:32 am (UTC)Причем еще желательно с вариантами исходя из разных наборов шрифтов - стандарный микрософтовский, liberation, dejavu. Вариант с классическими русскими шрифтами - "Литературной" или "Академической" тоже интересен
Вариант генерации xsl-fo из markdown напрямую тоже, конечно, интересен.
no subject
Date: 2014-12-14 09:53 pm (UTC)Не понял вопрос насчет шрифтов - какие будут в конфиг файле, те и будут использованы. Хоть dejavu, хоть остальные. По имени из xsl-fo + стиля выбирается соотв. блок font. Имя шрифта и стиль внутри файла ttf файла роли не играет.
Так на проекте решалась поддержка иврита, арабского, и какого-то из восточных (Малайзия вроде-бы) языков - просто перезаписывали ttf файлы и пересоздавали xml метрик, конфиг fop и шаблоны не меняли.
Можно запустить fop с -d и посмотреть чего ему не хватает.