2012-02-22 1 views
0

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

Мой первоначальный план состоял в том, чтобы создать шаблон в HTML/CSS и использовать wkhtmltopdf для создания PDF-файла, но у меня возникли проблемы с получением повторяющихся заголовков и нижних колонтитулов на каждой странице. thead и tfoot не поддерживаются Webkit, и исправление, предложенное in this other question, похоже, тоже не работает.

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

EDIT

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

+1

введите «pdf creator library» в google и начните оценивать параметры, соответствующие вашим потребностям. –

+0

Вы можете использовать класс PDF Zend Frameworks. http://framework.zend.com/manual/en/zend.pdf.html Я использовал это один раз в качестве тестового примера для составления спецификационных листов нашей компании. Вы в основном просто кладете вещи на сетку, где я считаю, что верхний левый был 0,0. Затем вы можете запланировать страницу 8.5x11 и создать свой счет. Классы ZF могут использоваться независимо от всей системы. Затем вам понадобится система PHP. – jmbertucci

+0

Что-то вроде CutePDF, если вы хотите придерживаться слова шаблон или если вы чувствуете себя немного смелым, например iText или iTextSharp –

ответ

4

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

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

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

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

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

0

Если вы используете облако 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

1

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

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

+0

Это, по сути, то, что я нашел после нескольких исследований. Вероятно, будет использовать ruby ​​[ODF-Report library] (https://github.com/sandrods/odf-report). Не знаю, почему я не думал об этом раньше :) –

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^