Генерация 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-29 01:55 pm (UTC)no subject
Date: 2014-10-29 02:55 pm (UTC)no subject
Date: 2014-10-27 01:36 pm (UTC)Решение работает под Солярисом в Транстелекоме уже лет 7, все довольны ;)
no subject
Date: 2014-10-27 01:45 pm (UTC)Мне нужен весь BMP, то есть по крайней мере вся латиница (включая польский и исландский), греческий и нормальная пунктуация, и это в одном документе с кириллицей.
Пробовать даже не интересно, по причине отсутсрвия документов, которые можно было бы без потерь сконвертить в 8-битную кодировку.
Хотя вот нет - попробовал и убедился, что cp1251 Оно только делает вид, что понимает.
(no subject)
From:А тестовый файлик в UTF-8 можно?
From:Re: А тестовый файлик в UTF-8 можно?
From:Re: А тестовый файлик в UTF-8 можно?
From:no subject
Date: 2014-10-27 01:43 pm (UTC)no subject
Date: 2014-10-27 01:46 pm (UTC)В следующий раз за попытку что-то сказать на таком уровне понимания темы - забаню.
(no subject)
From:(no subject)
From:no subject
Date: 2014-10-27 01:47 pm (UTC)no subject
Date: 2014-10-27 01:58 pm (UTC)Простые случаи - это какие языки? Русский и английский? В каком формате исходно пишется/генерируется документ и как потом преобразуется в XSL-FO?
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-10-27 02:09 pm (UTC)no subject
Date: 2014-10-27 02:13 pm (UTC)Вот кого б я убил с особой жестокостью, так это тех троллей. которые qt написали.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-10-27 02:12 pm (UTC)no subject
Date: 2014-10-27 02:15 pm (UTC)no subject
Date: 2014-10-27 02:17 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-10-27 02:31 pm (UTC)ну или поискать готовый html2ps на перле
no subject
Date: 2014-10-27 02:45 pm (UTC)Впрочем, даже если такой конвертер найдется, то увы, gostscript генерирует безобразные pdf-ы - без оглавления, без возможностей поиска, да еще и шрифты в кривые преобразовать норовит.
"готовый html2ps на perl-e" увы. не развивался с тех пор как я 15 лет назад его патчил на предмет поддержки хоть какой кириллицы. За пределами 8 битных кодировок ничего не умеет, шрифты включать не умеет.
no subject
Date: 2014-10-27 02:38 pm (UTC)no subject
Date: 2014-10-27 02:46 pm (UTC)no subject
Date: 2014-10-27 02:42 pm (UTC)no subject
Date: 2014-10-27 03:14 pm (UTC)(no subject)
From:no subject
Date: 2014-10-27 02:51 pm (UTC)no subject
Date: 2014-10-27 03:12 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-10-27 02:58 pm (UTC)Почему? Чем тебе не нравятся иксовые библиотеки?
>Но чтобы нормально работало по меньшей мере со всем Basic
> Multilingual Plane юникода (входной формат - что-то в utf-8).
Урежь остера.
Весь BMP не поддержывает никто. Совсем. Включая виндовый notepad и гнутый charmap. Для всх можно найти комбинацыю из half-width character + accent +RL, на которой оно сломается. Или просто символы из devangari, которые забыли включить в таблицы. Это судьба.
no subject
Date: 2014-10-27 03:09 pm (UTC)Мне не нравится наличие любого куска лишнего кода.
Ну и вообще, инструментов, которые используют X-овые библиотеки у меня есть целых два - mozilla и libreoffice
> Урежь остера.
> Весь BMP не поддержывает никто. Совсем. Включая виндовый notepad и гнутый
> charmap. Для всх можно найти комбинацыю из half-width character + accent
>+RL, на которой оно сломается.
Нужен инструмент, который ХОТЯ БЫ СТАРАЕТСЯ поддержать всё. Примерно на том уровне как это сейчас делают браузеры и офисные пакеты. Отсутствующие символы в шрифтах, понятно, не его проблема. Сложные случаи combining character готов простить, если разработчики воспринимают сообщения о подобного рода проблемы как баги, которые фиксить обязательно надо, но когда пофиксятся более приоритентые.
> Или просто символы из devangari, которые забыли включить в таблицы. ,
Э, мне тут как раз девангари-то и потребуется. У меня в "Ясмине" действие в Индии происходит. Соответственно цитаты нужно будет на хинди, маратхи и санскрите втыкать. (в основном, конечно, на урду и фарси, там проще, там арабская графика).
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-10-27 02:59 pm (UTC)no subject
Date: 2014-10-27 03:11 pm (UTC)no subject
Date: 2014-10-27 03:19 pm (UTC)никогда им не пользовалсявот только что впервые в жизни скачал вариант под винду (причём XP) и запустил. Plain text в 1251 она мне сконвертировала, русские буковки на месте. (пауза, пробую дальше) Ага, utf-8 с кириллицей и греческим одновременно тоже. Дальше пробовать лень.Update: погоди, тебе ведь для книжки надо? Ну тогда точно calibre! ;-)
... In Soviet Russia, English pidgins YOU!! ...
no subject
Date: 2014-10-27 06:29 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-10-27 05:54 pm (UTC)no subject
Date: 2014-10-27 06:31 pm (UTC)Нужно для всех ttf генерировать fop-ttfreader-ом метрики, а потом еще прописывать в конфиге описание шрифта с URL-ками на метрику и сам шрифт и списком алиасов.
А для того чтобы докбук печатался по-русски, достаточно заалиасить на какие-нибудь шрифты с русскими буквами стандартные serif, sans-serif и monospace
(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-10-27 06:19 pm (UTC)Остановился на питоновской mwlib, которая выдавала удовлетворяющие меня результаты - нормальная поддержка кириллицы, встроенные шрифты с только необходимыми глифами (как это там называется).
Насколько я помню, унутре себя она пользуется pyPdf.
no subject
Date: 2014-10-27 06:31 pm (UTC)no subject
Date: 2014-10-27 08:40 pm (UTC)Но вообще-то программы для того и распространяются (в частности в интернете) чтобы не делать повторно чужую работу.
no subject
Date: 2014-10-27 07:14 pm (UTC)no subject
Date: 2014-10-27 09:37 pm (UTC)Например, есть такая вещь PhantomJS (http://phantomjs.org/) — a headless WebKit scriptable with a JavaScript API. Скрипт в четыре строки рендерит и сохраняет страницу в PNG/JPEG/SVG/PDF на выбор. Попробовал сохранить в PDF: с русскими буквами проблем вроде нет, PDF нормальный (не картинкой, поиск по тексту работает), но в PDF маловат трекинг шрифта, буквы касаются друг друга (возможно, настраивается, возможно, можно поправить в CSS). Использовал этот метод (http://phantomjs.org/api/webpage/method/render.html).
no subject
Date: 2014-10-27 09:45 pm (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2014-10-28 10:42 am (UTC)no subject
Date: 2014-11-08 07:16 pm (UTC)no subject
Date: 2014-11-09 06:23 am (UTC)