Динамическая генерация PDF из шаблона

У меня есть требование создать PDF файл в нашем (ASP.net) приложении. Мы должны соответствовать следующим требованиям:

  • Текст будет в значительной степени динамичным и должен быть добавлен программно.

  • В идеале мы хотели бы скомпилировать эти сгенерированные документы из шаблонов PDF, предоставляемых нашими дизайнерами.

  • Некоторые разделы/страницы могут отображаться или не отображаться в зависимости от определенных условий - в идеале мы хотели бы, чтобы контент "текла" вверх, чтобы заполнить пространство, когда что-то удалено.

  • Некоторые страницы могут потребоваться повторить в зависимости от определенных условий.

  • Некоторые из шаблонов PDF будут неконтролируемы (мы заполняем формы заявок, предоставляемые третьими лицами), поэтому возможность читать в пустом PDF файле и заполнять его было бы хорошо.

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

То, что я ищу здесь, - это небольшой совет от любого, кто был в подобной ситуации.


Небольшое обновление здесь, мы пошли с iTextSharp - это мощный инструмент, но он немного учится, однако он быстрый, легкий и делает именно то, что мы хотим, чтобы он делал.

Однако...

Я бы отметил, что последняя версия больше не является действительно бесплатной (как в пиве) - лицензия не разрешает коммерческое использование. В результате у нас теперь есть лицензионная версия, но это не потрясающе дешево (и они не публикуют прейскурант).

Ответ 1

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

Я не уверен, что iText может справиться с вашим третьим требованием. Я знаю, что он может создать pdf файл из html файла. Возможно, используйте то, что опубликовал Tomas, и создайте pdf с iText.

Ответ 2

Для этого существуют различные коммерческие компоненты. Посмотрите: PDFLib (http://www.pdflib.com/), Tall Components (http://www.tallcomponents.com/) и т.д.

Я использую продукты от компонентов Tall и могу рекомендовать их.

Некоторые другие намного дороже.

ITextSharp, как вы уже упоминали, довольно хорош и может использоваться для добавления/удаления внешних страниц, в этом вы можете скрыть полные страницы, омминив их или заменить их на страницы-заполнители. iText может использовать существующие файлы PDF или создавать пустые страницы.

В моем личном опыте я просто удалил изображения и текст на существующие страницы и добавил страницы, созданные средством создания отчетов, когда требуются табличные данные.

НТН

Ответ 3

Зачем нужны файлы шаблонов в формате pdf? С динамикой, которую вы хотите, это плохой формат для создания шаблона отчетов. Используйте программное обеспечение для отчетов, которое также выводится как pdf. Ваши дизайнеры могут легко создавать шаблоны с помощью графического интерфейса. Здесь вы найдете множество решений для отчетности в stackoverflow.

Ответ 4

Мы использовали http://www.dynamicpdf.com/ для таких проектов, которые были довольны результатом. У них есть инструмент для создания PDF WYSIWYG, который вы можете использовать для построения шаблона макета вашего PDF вместе с инструментом для объединения шаблона с вашими данными на основе сопоставления полей и столбцов. Это экономит часы ручной кодировки каждого элемента данного PDF. Он поддерживает верхние и нижние колонтитулы страниц и рассматривает сложности разрывов страниц.

Ответ 5

Я хотел бы использовать создание файлов HTML из шаблонов и превратить их в PDF с помощью Prince. Принц очень гибкий, и разбиение HTML файлов с шаблонами намного проще, чем создание PDF файлов напрямую.