Re: Генератор отчетов, html и pdf

399 views
Skip to first unread message

Arcady Chumachenko

unread,
Nov 12, 2012, 10:21:36 AM11/12/12
to django-russian
Я использовал xhtml2pdf, как следует из названия - он html перегоняет в pdf. Соответственно, генерим отчет в html, показываем в браузере, даем сказать в pdf.

Но html там должен быть достаточно простой, я уверен, что js и прочий css3 не заработают.


2012/11/12 Igor Zakharov <igo...@gmail.com>
Всем привет!

Есть задача по написанию собственного генератора отчетов, с учетом потребностей конторы. Делаться, скорее всего, будет на python+django. Стою перед выбором библиотек, framework'ов и т.д.

Наткнулся на reportlab, вопросы по сему framework'у:
- PDF оно генерировать умеет и, в том числе из html, а вот может-ли html сгенерировать?
- Никто не в курсе, насколько навороченную страничку можно конвертнуть? Скажем есть на странице графики нарисованные JS(JSXGraph, fgCharting, ChartMaker и т.д.), они "пролезут" или нет?
- Как на счет конвертации в другие форматы, ODF, например?

Может у кого есть предложения в плане выбора средств для создания генератора отчетов, именно для генерации и отображения, может быть reportlab не лучший вариант?
Необходимо:
1) просмотр из браузера;
2) экспорт в более менее популярный формат(можно несколько), например, pdf.

--
 
 



--
Аркадий Чумаченко // Arcady Chumachenko
веб-проекты // web development
icq is no more, use google talk please
skype arcady.chumachenko
cell +7 911 701-0626 / +5 938 545-24-98
www http://ilvar.tumblr.com/

Игорь Бриков

unread,
Nov 12, 2012, 10:17:58 AM11/12/12
to django-...@googlegroups.com
Доброго, Игорь.
Возможно Вам стоит уделить больше внимания чему-нить типа ExtJS или Jquery, раз "есть на странице графики нарисованные JS" (с)
За конвертацию, в простом случае, можно найти бесплатно написанные сервера и допилить под свои нужды. 

А так, Ваша задача довольно объемная может быть и никакой конкретики особо не найти, т.к. любую задачу можно решить разными инструментами.  (: 





12 ноября 2012 г., 14:22 пользователь Igor Zakharov <igo...@gmail.com> написал:

Всем привет!

Есть задача по написанию собственного генератора отчетов, с учетом потребностей конторы. Делаться, скорее всего, будет на python+django. Стою перед выбором библиотек, framework'ов и т.д.

Наткнулся на reportlab, вопросы по сему framework'у:
- PDF оно генерировать умеет и, в том числе из html, а вот может-ли html сгенерировать?
- Никто не в курсе, насколько навороченную страничку можно конвертнуть? Скажем есть на странице графики нарисованные JS(JSXGraph, fgCharting, ChartMaker и т.д.), они "пролезут" или нет?
- Как на счет конвертации в другие форматы, ODF, например?

Может у кого есть предложения в плане выбора средств для создания генератора отчетов, именно для генерации и отображения, может быть reportlab не лучший вариант?
Необходимо:
1) просмотр из браузера;
2) экспорт в более менее популярный формат(можно несколько), например, pdf.

--
 
 



--
А бабушки все рэспаунялись и рэспаунялись...

Serge Matveenko

unread,
Nov 12, 2012, 12:18:36 PM11/12/12
to django-...@googlegroups.com
2012/11/12 Igor Zakharov <igo...@gmail.com>:

> Может у кого есть предложения в плане выбора средств для создания генератора
> отчетов, именно для генерации и отображения, может быть reportlab не лучший
> вариант?
> Необходимо:
> 1) просмотр из браузера;
> 2) экспорт в более менее популярный формат(можно несколько), например, pdf.

любые шаблоны для html + http://code.google.com/p/wkhtmltopdf/


--
Serge Matveenko
mailto: se...@matveenko.ru
github: http://lnkfy.com/1
linkedin: http://lnkfy.com/S

aruseni

unread,
Nov 12, 2012, 12:56:24 PM11/12/12
to django-...@googlegroups.com
Не уверен, что это подойдёт для вашей задачи, но в более простом случае я два года назад использовал для этих целей pisa (XHTML/HTML/CSS to PDF converter). Это были довольно несложные PDF-файлы с экзаменационными вопросами (из теста автоматически генерируются два PDF-файла с одинаковым набором случайных вопросов: один файл для преподавателя, второй для студента). Если интересно, исходники есть на Github, описание у меня в блоге.

понедельник, 12 ноября 2012 г., 13:22:00 UTC+1 пользователь Igor Zakharov написал:
Всем привет!

Есть задача по написанию собственного генератора отчетов, с учетом потребностей конторы. Делаться, скорее всего, будет на python+django. Стою перед выбором библиотек, framework'ов и т.д.

Наткнулся на reportlab, вопросы по сему framework'у:
- PDF оно генерировать умеет и, в том числе из html, а вот может-ли html сгенерировать?
- Никто не в курсе, насколько навороченную страничку можно конвертнуть? Скажем есть на странице графики нарисованные JS(JSXGraph, fgCharting, ChartMaker и т.д.), они "пролезут" или нет?
- Как на счет конвертации в другие форматы, ODF, например?

Mikhail Kashkin

unread,
Nov 12, 2012, 10:17:45 PM11/12/12
to django-...@googlegroups.com
Если что-то навороченное, но с небольшой нагрузкой и внутри офиса, то по моему проще сделать генерацию PDF средствами браузера, просто на сервере пыркать скриптом браузер чтобы он генерил/"отправлял на печать" PDF встроенными средствами. Можно и к принтеру привязать тогда.

ODF — это формат который можно не только смотреть, но и редактировать. Если так и этим потом будут действительно заниматься, то возможно стоит исходить из будущих задач и возможно придется генерировать каким-то более навороченным фреймворком.

Взглянул на JS библиотеки, думаю вам повезет если браузеры смогут печтать страницы после интерпретации, но в PDF очень не уверен, что получится вставлять их. Возможно просто мало знаю формат PDF и в него можно вставлять не только вирусы, но и javascript'ы.

2012/11/12 Igor Zakharov <igo...@gmail.com>
Всем привет!

Есть задача по написанию собственного генератора отчетов, с учетом потребностей конторы. Делаться, скорее всего, будет на python+django. Стою перед выбором библиотек, framework'ов и т.д.

Наткнулся на reportlab, вопросы по сему framework'у:
- PDF оно генерировать умеет и, в том числе из html, а вот может-ли html сгенерировать?
- Никто не в курсе, насколько навороченную страничку можно конвертнуть? Скажем есть на странице графики нарисованные JS(JSXGraph, fgCharting, ChartMaker и т.д.), они "пролезут" или нет?
- Как на счет конвертации в другие форматы, ODF, например?

Может у кого есть предложения в плане выбора средств для создания генератора отчетов, именно для генерации и отображения, может быть reportlab не лучший вариант?
Необходимо:
1) просмотр из браузера;
2) экспорт в более менее популярный формат(можно несколько), например, pdf.

--
 
 



--
Mikhail Kashkin

Метасов Артур

unread,
Nov 12, 2012, 10:24:53 PM11/12/12
to django-...@googlegroups.com
13 нояб. 2012, в 05:17, Mikhail Kashkin <mkas...@gmail.com> написал(а):

Если что-то навороченное, но с небольшой нагрузкой и внутри офиса, то по моему проще сделать генерацию PDF средствами браузера, просто на сервере пыркать скриптом браузер чтобы он генерил/"отправлял на печать" PDF встроенными средствами. Можно и к принтеру привязать тогда.

Думаю будет немного неудобно это реализовывать, когда доступ к сервису/отчетам разрешен только авторизованным пользователям.

Я б для такой задачи просто делал два шаблона – один с JS плагинами для графиков, а второй с какой-то библиотекой, которая готовые изображения выдает, и из этого б уже делал PDF.

--------
Метасов Артур
met...@gmail.com
(048)7876877
(098)5308020

Mikhail Kashkin

unread,
Nov 12, 2012, 11:10:11 PM11/12/12
to django-...@googlegroups.com
В чем неудобство? На сервере запускается скрипт, который генерирует файл и отдает скачать пользователю. Что именно его генерирует пользователю не важно. 

2012/11/13 Метасов Артур <met...@gmail.com>

Думаю будет немного неудобно это реализовывать, когда доступ к сервису/отчетам разрешен только авторизованным пользователям.

Метасов Артур

unread,
Nov 12, 2012, 11:16:37 PM11/12/12
to django-...@googlegroups.com
13 нояб. 2012, в 06:10, Mikhail Kashkin <mkas...@gmail.com> написал(а):

В чем неудобство? На сервере запускается скрипт, который генерирует файл и отдает скачать пользователю. Что именно его генерирует пользователю не важно. 

Неудобство в том, что браузер на сервере, отправленный на URL отчета, получит Access Denied так как нет куки сессии. Да и по одному и тому же URL-у для разных пользователей вполне вероятно будут разные отчеты, в зависимости от личных настроек.
Так что придется генерировать одноразовые URL-ы для каждого конкретного отчета, привязанные к пользователю, доступные без авторизации с IP "pdf-принт-сервера".

Serge Matveenko

unread,
Nov 13, 2012, 2:38:22 AM11/13/12
to django-...@googlegroups.com
2012/11/13 Метасов Артур <met...@gmail.com>:

> Так что придется генерировать одноразовые URL-ы для каждого конкретного
> отчета, привязанные к пользователю, доступные без авторизации с IP
> "pdf-принт-сервера".

Вы сами только что доказали, что никакой проблемы так делать нет.

Mikhail Kashkin

unread,
Nov 13, 2012, 3:41:40 AM11/13/12
to django-...@googlegroups.com
О-ох:

Я программист, я не хочу чтобы все просто так работало, я хочу трахаться с этим три месяца, а потом ненавидеть свой результат еще 10 лет, потому что его невозможно поддерживать.

Пацаны, дух старой школы живет в:

$ curl http://local.bullshit-company.pravoslavie | wkhtmltopdf | mail "boss@bullshit-company.pravoslavie"

Чувствую пора в рассылку начинать постить котиков.

Посмотрите на http://code.google.com/p/wkhtmltopdf/

2012/11/13 Serge Matveenko <se...@matveenko.ru>
--


Serge Matveenko

unread,
Nov 13, 2012, 3:55:04 AM11/13/12
to django-...@googlegroups.com
2012/11/13 Mikhail Kashkin <mkas...@gmail.com>:
> Посмотрите на http://code.google.com/p/wkhtmltopdf/

Это вы мне? Посмотрите мое первое письмо в тредике. Или оно к
модератору упало, потому что в нем была ссылка туда же?

マギクアルセニ

unread,
Nov 13, 2012, 12:04:25 PM11/13/12
to django-...@googlegroups.com
Не, Сергей, письмо в рассылке, всё ок. :)

Я тоже думаю, что это нормальный подход, если он вызывает наименьшее усложнение системы (то есть такое решение легко поддерживать, видоизменять, и так далее).

2012/11/13 Serge Matveenko <se...@matveenko.ru>
--



Dmitry Agafonov

unread,
Nov 13, 2012, 1:03:42 PM11/13/12
to django-...@googlegroups.com
По крайней мере на одной странице wkhtmltopdf у меня упала.
Ни на одной странице она не дала в pdf мне шрифты в том же виде, как и в браузере.
Сходил в их трекер, эти баги описаны. Пока пользоваться (лично меня) не тянет.


13 ноября 2012 г., 21:04 пользователь マギクアルセニ <aruseni...@gmail.com> написал:
--
 
 



--
Dmitry Agafonov ~ http://agafonov.pp.ru/

マギクアルセニ

unread,
Nov 13, 2012, 1:52:49 PM11/13/12
to django-...@googlegroups.com
Кстати, есть ещё один забавный вариант — запуск OpenOffice (LibreOffice) в headless-режиме. PDF он генерирует отлично (по крайней мере в плане шрифтов и прочего), плюс ещё кучу форматов поддерживает. Но сложностей там тоже будет много, к тому же может быть низкая скорость и большое потребление оперативной памяти, так что тут надо очень аккуратно (в общем, подходит только для некоторых случаев и может требовать использования очереди задач, либо вообще организации отдельного бэкэнда, который будет этим заниматься, принимая запросы, например, через REST API).

2012/11/13 Dmitry Agafonov <agafono...@gmail.com>

--
 
 

Alexander Kuzkin

unread,
Nov 13, 2012, 2:21:38 PM11/13/12
to django-...@googlegroups.com
wkhtmltopdf на Qt+Webkit написана, соответственно по зависимостям потянет полный комплект. 
Отрисовывает PDF очень хорошо (ибо webkit), но обходится не дешево.

Сейчас сам столкнулся с той же проблемой - надумалось вот что: генерить буду в reportlab, а показывать 

Второй вариант - LaTeX  - он что угодно на выходе сделать может. По ресурсам сильно дешевле, чем wkhtmltopdf



13.11.2012, в 22:03, Dmitry Agafonov <agafono...@gmail.com> написал(а):

--
 
 

Dmitry Agafonov

unread,
Nov 13, 2012, 2:28:10 PM11/13/12
to django-...@googlegroups.com
13 ноября 2012 г., 23:21 пользователь Alexander Kuzkin <xbe...@gmail.com> написал:
wkhtmltopdf на Qt+Webkit написана, соответственно по зависимостям потянет полный комплект. 
Отрисовывает PDF очень хорошо (ибо webkit), но обходится не дешево.

Ничего не тянет, там статический бинарник (одна штука) рекомендуют скачать и юзать.

Serge Matveenko

unread,
Nov 13, 2012, 10:57:18 PM11/13/12
to django-...@googlegroups.com
2012/11/13 Dmitry Agafonov <agafono...@gmail.com>:

> 13 ноября 2012 г., 23:21 пользователь Alexander Kuzkin <xbe...@gmail.com>
> написал:
>>
>> wkhtmltopdf на Qt+Webkit написана, соответственно по зависимостям потянет
>> полный комплект.
>> Отрисовывает PDF очень хорошо (ибо webkit), но обходится не дешево.
>
>
> Ничего не тянет, там статический бинарник (одна штука) рекомендуют скачать и
> юзать.

Да да, и он как-то странно падает сильно реже, чем если руками себе собирать.

Reply all
Reply to author
Forward
0 new messages