Создание счетов в формате PDF. Существуют ли шаблонные решения?
Наша компания стремится интегрировать счета в новую систему, которую мы разрабатываем.
Нам требуется решение для создания макета счета, а затем преобразовать в PDF.
Мы рассмотрели простое выставление счета в html/css, а затем преобразование в pdf. Мы также рассмотрели использование конвертации SVG->PDf.
Оба эти решения хорошо интегрируются в существующий язык шаблонов, используемый для нашего веб-приложения.
Исторически мы работали в Microsoft и использовали Crystal Reports для такой задачи, но мы ищем решение Linux с открытым исходным кодом для этого проекта.
Есть ли у кого-нибудь предложения о подходе или технологии, которые мы могли бы использовать для такой задачи?
22 ответа
Обычный способ - установить (La)TeX (возможно, уже на linux box) и запустить pdflatex, чтобы получить pdfs. Вы также можете использовать Apache FOP, если вы предпочитаете xslt и xsl-fo.
Если количество создаваемых счетов низкое, вы можете использовать open-office (напрямую или в качестве инструментария).
Если вы хотите высокоточное позиционирование и низкоуровневый доступ, вам может понадобиться низкоуровневая библиотека pdf (я не знаю, работает ли iTextSharp с моно).
Сначала я бы попробовал LaTeX, потому что он позволяет вам получать результаты с наименьшими усилиями.
Попробуйте это... создать пустую накладную с Word (или что угодно) и сохранить его в формате PDF.
Затем используйте библиотеку PDF для изменения PDF (вставьте текст в определенных координатах). Мы делаем это в мире Microsoft, и это очень легко.
Самым большим преимуществом является то, что мы можем использовать наши собственные инструменты для создания и изменения шаблона. Если мы хотим добавить статический текст, просто откройте Word, внесите изменения и сохраните его в файл PDF (который используется в качестве шаблона).
Для Microsoft мы используем iTextSharp, который на самом деле является портом C# оригинальной Java-версии iText.
Дополнительно...
Вы можете использовать Adobe Acrobat для вставки полей в PDF (адрес, телефон, номер счета, позиция 1, позиция 2 и т. Д.), А затем использовать iText / iTextSharp для заполнения этих полей во время выполнения.
Это, более подробно, то, что мы делаем... и это очень легко.
Ранее я производил счета-фактуры, создав шаблон PostScript-файла, а затем с помощью Ghostscript ps2pdf
преобразовать их в PDF-файлы.
Мы используем Reportlab с Python. Если вы посмотрите вокруг, есть множество готовых форм / счетов / и т.д.
Существует несколько механизмов отчетности OSS ( Jasper Reports, Pentaho и BIRT, если назвать три), которые вы можете использовать почти так же, как вы использовали Crystal Reports в прошлом. На одном из других постеров упоминается ReportLab, который можно использовать, если вы используете Python или можете встроить среду исполнения Python в свое приложение.
Вероятно, наиболее гибким решением является создание XML с данными счета-фактуры, а затем с помощью XSLT преобразуйте их в PDF, HTMls, что угодно...
Это зависит от вашей среды. Если у вас есть доступ к Java, вы можете взглянуть на iText ( http://www.lowagie.com/iText/), библиотеку, которая позволяет создавать файлы PDF на лету.
Есть два шага, если я правильно понял:
1) Создание шаблона PDF с заполнителями для программного наполнения данных
2) Заполнение шаблона PDF программно во время выполнения
Для #1 OpenOffice позволяет создавать шаблоны PDF, которые затем могут быть заполнены программно. Это достаточно хорошо для создания простых счетов, которые, вероятно, не связаны с сеткой данных / таблицами.
Для #2 у вас уже есть ответы здесь - iText, iTextSharp.
Надеюсь это поможет!
Не уверен, что ваша цель здесь, но есть php-библиотека с открытым исходным кодом под названием fpdf, которая также имеет расширение для того, чтобы брать готовый pdf в качестве макета и затем заполнять его большим количеством контента, генерируя новый PDF с этой информацией.
Тем не менее, я бы выбрал решение, которое вы можете легко интегрировать в платформу, которую вы строите, но я бы не стал использовать решение HTML->PDF, так как вы не будете иметь ни малейшего представления о том, что поместится на части бумаги о размерах в такой среде, а это означает, что вы не будете знать, когда вам следует разделить содержимое на два отдельных шаблона.
Вы также можете попробовать использовать XSL:FO. XSL:FO является документированным стандартом для описания макета страницы: http://www.w3.org/TR/xsl/.
Я добился успеха в двух проектах по созданию документов путем создания схемы XML, которая определяет содержание "PDF". Затем я использую инструмент XSD (от Microsoft) для создания класса, представляющего этот документ. Затем я отображаю свои данные в эту структуру, сериализую заполненный класс в XML вместе с таблицей стилей XSL, которая определяет, как эти данные должны быть отображены в FO, и передаю их в средство форматирования FO. Для форматировщиков я с успехом использую Alt-Soft Xml2Pdf. Есть несколько других там. Есть несколько инструментов, которые помогут создать таблицу стилей XSL-FO (например, stylusstudio и XmlSpy), но я рекомендую изучить конструкции FO, поскольку инструменты, похоже, создают раздутые таблицы стилей. FO сравним с HTML (где P-тег - это BLOCK-тег в FO), но может быть сложным. Хорошая особенность FO в том, что некоторые форматировщики поддерживают преобразование в другие форматы, такие как Word, HTML и т. Д.
Другие опции:
iTextSharp (C# порт iText). Просто начал читать об этом. С открытым исходным кодом и бесплатно. Я не думаю, что есть какие-либо "шаблоны", поддерживаемые этим, но я могу ошибаться в этом.
Службы отчетов SQL Server. Предполагая, что ваши данные счета-фактуры находятся или могут быть введены в формат, который может быть прочитан службами отчетов (SQL Server, веб-службы и т. Д.), Определите макет в SSRS и затем опубликуете его на сервере отчетов. Используйте веб-службы SSRS или выполнение параметров запроса, чтобы выполнить отчет и вывести его в формате PDF.
Хорошо, поиск проектов Google Code обнаружил Simple Invoices, и это здорово и хорошо поддерживается.
Этот html-2-pdf сайт может быть полезной отправной точкой: http://maarten.lippmann.us/?p=101
Сайт, созданный моим другом, также использует скрипт для преобразования HTML-страниц в печатные PDF-файлы - http://philambdaupsilon.org/. Не уверен в точных деталях, но он ТАК пользователь, и я тоже отправлю ему этот вопрос.
Некоторые могут использовать редактор шаблонов Dhek, чтобы определить область / заполнитель для существующего PDF, не изменяя существующий документ, а затем заполнить его для создания окончательного документа (например, с помощью пользовательских значений из формы): https://github.com/applicius/dhek.
html2pdf работает очень хорошо. Вы можете использовать это для генерации как HTML, так и PDF отчетов из одного источника.
Я использую открытый офис на сервере, а затем генерирую XML для документа (просто разархивируйте документ и взломайте)
К сожалению, лучшая система на рынке (в настоящее время) передает HTML & CSS на сервер ColdFusion и возвращает возвращаемый PDF. Так что, если деньги не представляют большой проблемы, это самое быстрое решение для развертывания, которое даст наилучшие результаты.
Я очень старался получить FPDF, TCPDF, класс pdf для R&OS и даже рекомендацию CodeIgniter о работе, но ничего со стабильным выводом ни для чего, кроме самых простых / простых HTML-файлов, не получалось.
Честно говоря, если решение ColdFusion нежизнеспособно, я бы использовал html2ps, а затем ps2pdf для преобразования ваших файлов в PDF.
(Все это предполагает, что вы не хотите тратить время и разрабатывать каждый PDF-файл с использованием собственного кода PDF-создателя в PHP. Это то, что используют такие системы, как SugarCRM. Хотя он очень функционален со стабильными результатами, фактическое создание каждого PDF-файл генератора - самый болезненный процесс)
Если вы хотите, чтобы HTML-браузер был конвертирован в PDF, попробуйте команду
Вам нужно будет установить Firefox в дистрибутиве Linux, отключить все оповещения Firefox, а затем запустить его через виртуальный дисплей. Проверьте эту тему для более подробной информации.
Бешено работать хорошо, но дает лучшие результаты для преобразования HTML в PDF, которое я видел.
Сейчас я играю с Black Sheep Invoices, что поначалу замечательно, но сейчас у меня проблемы с тем, чтобы заставить его отображать PDF-файлы. Множество трудностей с установкой - вероятно, намного проще на вашем собственном сервере, но я на общем хосте с ним. Часть HTML-вывода и управления данными хорошо сделана, но вы не получите ничего, просто создав шаблон PostScript. Я надеялся найти ссылку на библиотеку, в которой есть активная команда разработчиков (Black Sheep в настоящее время не обновляется).
Мы использовали Jasper Reports раньше. Это не то, что вы бы назвали удобным для пользователя, но оно будет напрямую связано с вашей базой данных.
Для решения Ruby попробуйте Prawn: http://prawn.majesticseacreature.com/
Я использую TROFF для своих счетов из-за его чрезвычайно простой текстовой кодировки. Логика это несколько строчек Perl. Сохраняя это простым.