Как я могу создать хорошо отформатированный PDF? - PullRequest
0 голосов
/ 23 февраля 2012

Я работаю над автоматизацией системы выставления счетов нашей компании.В настоящее время все данные хранятся в нашей локальной базе данных MySQL, и кто-то вручную обновляет электронную таблицу Excel, а затем объединяет эти данные в шаблон MS Word.Цель состоит в том, чтобы автоматизировать этот процесс, чтобы счет можно было сгенерировать на нашем веб-сайте интрасети в формате PDF.

Первоначально я планировал создать шаблон в HTML / CSS и использовать wkhtmltopdf создать PDF, но у меня возникли проблемы с получением повторяемого верхнего и нижнего колонтитула на каждой странице.thead и tfoot не поддерживаются Webkit, и исправление, предложенное в этом другом вопросе , похоже, тоже не работает.

Поэтому я наткнулся на использование XML и XSL-ФО, о последнем я ничего не знаю.Это лучший путь?Существуют ли какие-либо библиотеки или утилиты, которые облегчат преобразование моего HTML + CSS в XML + XSL-FO?Есть ли другие альтернативы, которые я пропускаю?

EDIT

В настоящее время сервер CentOS Linux с базой данных MySQL.Весь другой код в настоящее время находится на PHP, но это может измениться, поскольку вся система обновляется.Linux и MySQL почти наверняка останутся.

Ответы [ 4 ]

4 голосов
/ 23 февраля 2012

По вашему требованию, XSL-FO может просто помочь. Гораздо чище создавать pdf-файлы непосредственно из данных, а затем идти по громоздкому пути html, если только вам не нужно также отображать html, тогда вы можете рассмотреть возможность преобразования html в pdf, но это всегда будет грязно.

Вы можете легко получить результаты XML из mysql (mysql --xml), а затем написать одну (или несколько) таблиц стилей xsl-fo для данных. тогда вы можете не только создавать PDF-файлы, но также файлы PostScript или RTF-файлы с некоторыми процессорами.

XSL-FO имеет свои ограничения, но для вашей ситуации этого должно быть достаточно.

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

другая возможность - сделать все это, например, java или c # - отправьте операторы select и зациклите результаты, а затем итеративно создайте PDF-файл, используя такую ​​библиотеку, как iText .

1 голос
/ 23 февраля 2012

Вы можете попробовать JODReports или Docmosis как варианты с меньшим количеством кода.Вы предоставляете документы Word или OpenOffice Writer в качестве шаблонов и используете эти механизмы для управления / заполнения шаблонов, а затем выплевываете документы в нужном вам формате (форматах).Это может означать, что ваши существующие Word-шаблоны могут использоваться напрямую, что сэкономит вам немного времени и усилий.

iText - это еще одна библиотека, которая позволит вам создавать и выкачивать PDF-файлы из кода.Это очень хорошо.

0 голосов
/ 24 февраля 2012

Если вы в порядке, используя .NET и C #, вы можете использовать DotPdf от Atalasoft (обязательный отказ от ответственности: я работаю в Atalasoft и написал большую часть DotPdf).Генерация пространства имен ориентирована именно на то, что вы пытаетесь сделать: автоматизировать генерацию отчетов.Исходя из основ, вы можете просто создавать документы непосредственно с помощью инструментария или создавать шаблоны документов с незаполненными текстовыми полями, которые вы можете перезагрузить и заполнить позже (см. здесь и здесь дляпримеры).

0 голосов
/ 23 февраля 2012

Если в облаке вы используете ASP.NET для Интернета, вы можете использовать бесплатную библиотеку ReportViewer и конструктор для автоматической публикации PDF-файлов.Вот некоторые ссылки:
http://gotreportviewer.com

http://weblogs.asp.net/srkirkland/archive/2007/10/29/exporting-a-sql-server-reporting-services-2005-report-directly-to-pdf-or-excel.aspx

...