Как стать автором
Обновить

Комментарии 29

Классно, спасибо. Наверное, еще можно добавить Pisa
Для чего-то не сложнее Заявления — да. Но ту же Форму 21001 она полностью гробит. Я решил не плодить зоопарк.
Да, Pisa отличная штука, мы ей печатаем вот такие инвойсы, совмещенные с трекингом и таможенными формами CN22 на одном листе самоклейки. Сделали за 3 часа примерно. Просто конвертируется HTML-ка, картинки и шрифты все подключаются автоматом. Никаких особых подводных камней не было замечено.
Дело в том, что при отладке шаблона я пишу html, тут же _одинаково_ вижу его в FireFox и любом webkit-браузере (да, можно достичь и такого) — при этом в конечный PDF рендерится так, как видно при отладке. Даже print preview из FireFox дает практически конечный результат.
А PISA рендерит совершенно по-своему. Сиречь — отладка шаблона замедляется в разы.
Ну и насчет page-break я не сильно уверен — кажется, не ловит. Могу и ошибаться.
Возможно, какие-то особо сложные конструкции она рендерит по-своему. Я задавал размер странице и дальше все размеры, включая шрифты, в мм, ширины ячеек таблицы в процентах. Сделал подобие reset.css, чтобы задать умолчания. Дальше были проблемы только с размером картинок, их пришлось подогнать вручную. Если у вас получился идеальный рендеринг, то это отлично.
Ok, на живом примере: из такого должно в точности получиться такое (wget, если что).
PISA (0.0.3) у меня просто поломалась: Traceback…
Красота. Моя, кхм, Pisa, на этом примере вообще дает белый лист :)
При этом заметим, что даже если форма «мягкая» — не дай бог она не понравится в налоговой (т.е. не будет максимально похожа на Консультантовскую). Просто завернут без комментариев (проверенно нашей юристкой).
А TeX не рассматривали? Вроде бы, наиболее простой и удобный вариант.
«3. Мягкие формы» > «Возможно».
Т.е. — в планах
Рисовать на нём таблички с нужными параметрами это просто ад.
Я бы посоветовал, использовать например pdfcrowd.com/.
Это сервис использует Prince ( www.princexml.com/ ), стоимость которого начинается от $3800. Прекрасен он тем, что умеет рендерить практически любой html, таким образом сверстать на twitter-bootstrap страничку пару пустяков, а получить еще и pdf еще проще. Заметьте, все это при минимальном количестве кода — значит не упадет.
Опять же — из тестового примера получилась немного ерунда (еще и с рекламой, которую в налоговой могут и не принять.
Но отработал очень корректно.
Спасибо за идею — запишу в TODO.
Два дня назад решал похожую проблему. Остановился на mPDF, он умеет конвертировать html в pdf, при этом написан полностью на php. Для предпросмотра может не подойти, так как его понимание html отличается от понимания браузеров, но добиться хорошего результата для мягких форм вполне можно.
Относится к категории «LibreOffice демон:… или свой велосипед».
Кстати, можно посмотреть сразу доку packages.python.org/django-webodt/, чтобы понять на сколько красивая штука
wkhtmltopdf же. Наверняка к нему есть питоновский интерфейс.
Этот случай рассмотрен. Интерфейс есть, он и применяется — вызов бинарника. Что не совсем нативно.
Python-binding к библиотеке libwkhtmltox пока падает.
Я использую с своем проекте trml2pdf от reportlab. Со временем разобрался в особенностях rml и дело пошло как по маслу.
Для рендера использую django шаблонизатор, и функцию подсмотренную где то на сайте RL.
Вызывается на подобие django.shortcuts.render типа так, это дает возможность использовать всю мощь шаблонов джанго и языка rml.
Не поддерживает многие фичи RML. Нет preview. Нет визуального редактора.
Читайте внимательнее, пожалуйста.
Например, что за фичи?
Перечислять очень долго.
Из 158 entities, перечисленные в RML user guide, trml2pdf поддерживает примерно 60.
В сырцах они все видны (def render(...):), можете сравнить самостоятельно.
Видели как сделаны отчеты в OpenErp?
Особо не присматривался. Увидел, что внутри лежит trml2pdf (слегка допиленный функционально — но сильно переделанный в коде) — и двинулся дальше.
Похоже — в QWebView 4.8 (или webkit 2.2 вообще?) поломалось page-break-*. ПО крайней мере — webkit-браузеры (кроме Chromium, что поняно) печатают без единого разрыва.
Ждем пачей — тогда проблема с html будет решена окончательно.
Резюме: Красивая печать в PDF из Django — это миф.
Тоже голову ломал в своё время…
Ну почему же… Вы можете наблюдать реальное приложение с таки достаточно красивыми PDF (налоговой и ФМС нравится, по крайней мере).
Другой вопрос что сейчас это решается чуть-чуть некрасиво — через вызов внешних программ.
До нативного python осталось совсем немного:
* допилить webkit
* и допилить poppler
>Резюме: Красивая печать в PDF из Django — это миф.

«Мы рождены, чтоб сказку сделать былью» ;)
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории