Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Генерация отчетов по шаблону


Автор: DEER 17.1.2010, 14:58
Всем привет!
Хочетьс узнать, кто чем пользуется?
Задача такая - есть исходный шаблон. Надо исходя из полученного набора данных заполнить документ. Как простая замена %%param%%-->param_value, так и заполнение таблицы.
вот то я наизучал:
1) HTML - самый, по ходу, простой способ. Есть проблема с картинками. То есть чтобы чел файл на диск сохранил, надо будет поизгаляться, чтобы картинка сохранилась. Где то видел формат хранения картинок и т.п. прямо в коде страницы, но правильно ли так делать?
2) rtf. Открытый формат. Но при попытке размножить строку в таблице (в текстовом редакторе) у меня лопнул мозг от нагромождения всяких 
Код

{\fs36\lang1033\langfe1049\langnp1033\insrsid13116701 
%%test%%}

 smile. Готового, работающего решения что то не нашел. То есть реализовать можно, но будет долго в изучении.
3) docx - вроде просто все. Куча xml'ников и засовыаем их  архив. Минус - тоже нет(не нашел) готового решения. Если выбрать этот вариант изучать по ходу больше чем при исп rtf
4) doc. Есть библиотеки, но блин под винду всё.


А кто уже делал подобное? Что использовали? Какими либами пользовались? В поиске был. И в гугле был. И даже на cpan был smile 

Автор: mvsgt 17.1.2010, 16:45
Сделайте html и превратите его в pdf

Автор: Egik2 17.1.2010, 18:16
А если XSLT + XSL-FO, можно напрямую писать в pdf, только не знаю как быть здесь с Perlом, надо искать XSL-FO процессор.

Автор: DEER 17.1.2010, 19:37
Цитата(mvsgt @ 17.1.2010,  16:45)
Сделайте html и превратите его в pdf

Чего  то я попробовал HTML::FormatRTF - он таблицы не поддерживает.

Автор: arto 17.1.2010, 23:24
1. latex
2. lout

издательские системы, могут генерить ps, pdf

Автор: mvsgt 18.1.2010, 02:09
А RTF::Writer не пробовали? 

Вообще надо в PDF выводить, но не очень ясно чем рендеринг для него сделать. html2pdf.pl у меня сходу не заработал, да и не поддерживает CSS он. И на страницы делить сложно, даже если и придумать как напечатать на постскриптовском принтере.

Автор: amg 18.1.2010, 07:27
Согласен с arto, latex и отдавать документ в pdf. На любой операционной системе гарантированно будет одинаковый внешний вид документа.

Мне нужно было генерировать заполненные бланки весьма сложной формы, через latex получилось просто и хорошо.

Тоже пробовал сначала rtf, но, во-первых, нужно хорошо знать этот формат, чтобы им пользоваться, во-вторых, вид документа получается различный у ворда и опенофиса.

Автор: xoma 18.1.2010, 10:18
В своем проекте мы используем довольно простую, но слегка избыточную схему.

Все шаблоны лежат в odt - формате, Перл прекрасно их обрабатывает (можно через вот это http://search.cpan.org/~jmgdoc/OpenOffice-OODoc-2.111/OODoc.pod).

Любой шаблон для редактирования - просто открывается в опен офисе и правится.

Для конвертации из одт  в пдф, ворд и прочее -  на отдельной машинке поднят tomcat и к нему прикручен ОпенОфис (так называемый принт-сервер =) ). 

Перл передает файл на обработку, а получает в ответ то что необходимо - как правило пдф. 

При желании могу рассказать подробней что и как используется.

Автор: mvsgt 18.1.2010, 11:54
Цитата(xoma @  18.1.2010,  10:18 Найти цитируемый пост)
При желании могу рассказать подробней что и как используется. 


Желание есть, тема действительно актуальная.

Автор: DEER 18.1.2010, 18:48
xoma,  да! Очень интересно будет почитать

Автор: xoma 18.1.2010, 22:39
В ближайшее время постараюсь все это систематизировать и написать статью про все это.


Автор: shamber 18.1.2010, 23:27
amg, если не сложно, расскажите поподробней о том, как вы решали данный вопрос с помощью latex

Автор: amg 19.1.2010, 08:50
Цитата(shamber @  18.1.2010,  23:27 Найти цитируемый пост)
amg, если не сложно, расскажите поподробней о том, как вы решали данный вопрос с помощью latex
Все крайне просто. Вручную сделаны tex-темплаты необходимых документов (это обыкновенные небольшие текстовые файлы, в отличие от rtf-файов, создавемых офисами, они вполне читабельные). Скрипт получает из форм данные, проверяет их и подставляет в темплаты. Из получившихся tex-файлов pdflatex (из состава latex) делает пдфники, ссылки на которые отдаются юзеру.

Мне такой подход понравился тем, что, во-первых, latex много где уже есть (на linux), если нет, то для всех систем есть дистрибутивы, во-вторых, tex - мощная издательская системы, и можно добиться, чтобы внешний вид документа невозможно было испортить никакими юзеровскими данными. И исключены ситуации типа "не оказалось нужного шрифта, с подставленным шрифтом один символ не влез в строку, все поехало".

Автор: shamber 19.1.2010, 13:14
Цитата(amg @  19.1.2010,  08:50 Найти цитируемый пост)
"не оказалось нужного шрифта, с подставленным шрифтом один символ не влез в строку, все поехало". 

т.е. я правильно понял, что эту проблему решает latex, в смысле tex?

Автор: amg 19.1.2010, 14:11
Цитата(shamber @  19.1.2010,  13:14 Найти цитируемый пост)
т.е. я правильно понял, что эту проблему решает latex, в смысле tex?
Ну да. У теха свои шрифты (векторные) и он либо сгенерит нужный фонт на лету (если просто не окажется нужного размера), либо, наверное, выдаст ошибку. 

Автор: LuxInTenebris 19.1.2010, 20:06
Народ, вы рехнулись? Какие RTF и DOCX...
http://www.linuxfocus.org/Russian/July2000/article156.shtml! Самое универсальное и переносимое решение, что только можно вообразить.
На выходе можно получить (X)HTML (визуальное оформление - через CSS) или любой другой текстовый формат (тот же RTF), на который хватит фантазии.
Картинки при очень сильной необходимости можно внедрить прямо в HTML в виде http://en.wikipedia.org/wiki/Data_URI_scheme, но лучше бы их всё-таки сохранять отдельно в файлы, чтобы уж мухи от котлет.

Автор: mvsgt 20.1.2010, 01:41
Цитата(LuxInTenebris @  19.1.2010,  20:06 Найти цитируемый пост)
Народ, вы рехнулись? Какие RTF и DOCX...


HTML для отчётов не всегда удобен. Если картинки внедрять в HTML - он будет несколько монстрообразный; если не внедрять - его будет трудно распространять. docx и rtf - для пользователя удобней, хотя бы тем что на страницы можно разбить. Самый удобный - это PDF, сохраняет форматирование.

Автор: LuxInTenebris 20.1.2010, 02:28
Цитата(mvsgt @  20.1.2010,  01:41 Найти цитируемый пост)
 если не внедрять - его будет трудно распространять. docx и rtf - для пользователя удобней, хотя бы тем что на страницы можно разбить

HTML во многом удобен тем, что его легко генерировать. А дальше можно скормить уже и PDF генератору.
DOCX — зло для не-Windows систем, RTF же морально устарел и не очень оптимален в плане размера файла.

Автор: krypt3r 20.1.2010, 09:27
Код

latex

+1. Давно зреет мысля тоже все шаблоны из RTF перевести в LaTeX

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)