Генерация 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 10:01 pm (UTC)С другой стороны, если уж генерировать, то docbook явно более правильный промежуточный формат, чем html. В нем лишнего меньше.
no subject
Date: 2014-10-28 04:05 pm (UTC)Всем заявленным изначально требованиям phantomjs полностью или частично удовлетворяет:
[+] рендерит обычный текст с минимальными шрифтовыми выделениямии (уровня примерно HTML 2.0)
[+] поддерживает Unicode
[±] поддерживает современные шрифты и их возможности¹
[+] не использует pdftex
[±] может рендерить RTL письменность²
[+] опенсорс
[+] headless, для работы X-сервер не требуется
[±] не зависит от x11: пакет в моём дистрибутиве зависит от libx11 следующим образом: phantomjs -> gstreamer0.10-base -> libxv -> libxext -> libx11; однако беглый взгляд на build.sh (https://github.com/ariya/phantomjs/blob/master/build.sh#L177) показывает, что можно собрать без gstreamer и поддержки видео; соответственно, без x11.
¹ webkit поддерживает также font features, а вот PDF-принтер пока нет
² c rtl, кажется, всё в порядке, но я попробовал подсунуть ему вертикальный японский (https://dl.dropboxusercontent.com/u/444684/OpenWebDemos/css3writingModes/japanese-upright.html), сверху-вниз, справа-налево; webkit это уже умеет отображать правильно, а вот принтер повернул глифы.