HTML в PDF по сравнению с программным созданием PDF с помощью PHP


У меня есть PHP-приложение, которое должно генерировать некоторые счета-фактуры в формате PDF и расписания в формате PDF с красивыми верхними и нижними колонтитулами. Некоторые пользователи Stackoverflow рекомендуют использовать TCPDF для создания PDF-документов. В своем исследовании я обнаружил два подхода к созданию PDF-файлов:

1) Программное форматирование PDF следующим образом:

    $tcpdf->SetFillColor(255, 0, 0);
    $tcpdf->SetTextColor(255);
    $tcpdf->SetDrawColor(128, 0, 0);
    $tcpdf->SetLineWidth(0.3);
    $tcpdf->SetFont('', 'B');

2) Преобразование HTML в PDF

Как мне решить, какой подход я должен использовать?

Author: Bozho, 2009-11-28

6 answers

Я могу порекомендовать Zend_Pdf, который является программным методом в соответствии с вашей классификацией.

Абстракция HTML хороша, но я не верю, что у вас есть полная мощность и контроль над полным API рисования на основе геометрии. Будьте осторожны с такими библиотеками, как fpdf, которые не поддерживают UTF-8 из коробки, и используйте парсер бедняка для "преобразования" HTML в PDF.

Что касается вашего заявления, я создал систему, которая генерирует шаблонные счета-фактуры. Мои пользователи могут загружать Шаблон PDF, который извлекается с помощью Zend_Pdf. Этот шаблон затем используется для каждой страницы сгенерированного счета-фактуры, что позволяет легко настраивать его.

Обратите внимание, что моя аудитория в основном графические дизайнеры, которые способны создавать эти шаблоны, поэтому здесь это было подходящее решение. Если ваша аудитория знакома только с HTML, "преобразование" HTML в PDF может быть лучшим способом.

 2
Author: David Snabel-Caunt, 2009-11-28 13:22:27

Я всегда рекомендую создавать PDF-файлы динамически, но на основе шаблонов, которые можно редактировать с помощью инструментов конечного пользователя или - по крайней мере - без необходимости быть программистом. В вашем случае это, вероятно, был бы HTML. Для меня идеальным решением является взять шаблон Office, заполнить его значениями программно и вывести его в PDF, когда это технически возможно. Я выполняю часть заполнения шаблона office на PHP, используя TBSOOO, и это работает довольно хорошо.

Основная причина использования подход на основе шаблонов по сравнению с созданием документа с нуля: пользователь может создать шаблон так, как он считает нужным, и вы не понадобитесь, когда потребуется изменить дизайн. (И это будет однажды нужно будет изменить.) Только когда вставленные данные необходимо каким-либо образом изменить или расширить, в игру вступает программист. Это огромная нагрузка на вашу спину.

 3
Author: Pekka 웃, 2009-11-28 13:21:43

Привет, у вас есть два варианта. Вы можете использовать dompdf домпдф, что позволяет вам создавать свой документ как обычный html-документ и оформлять его с помощью css. Вы можете превратить этот документ в pdf. Мой опыт был хорошим. Я визуализирую обычную html-страницу с помощью Zend_View и превращаю ее в pdf. Таким образом, у вас есть чрезвычайно гибкий шаблон, потому что вы можете принимать любые решения по отображению в своем представлении, генерирующем html.

→ смотрите список css-совместимость.

В качестве альтернативы вы могли бы использовать livedocx. Это также позволяет использовать подход, основанный на шаблонах, но более жесткий и без html. Интеграция для Zend Framework уже в пути.

 1
Author: Exception e, 2009-11-28 14:06:23

У меня был достаточный опыт работы со всеми тремя подходами:

  1. Создание документа программно с использованием TCPDF (который, хотя и был получен из FPDF, поддерживает UTF-8 из коробки). Хотя я большой поклонник Zend Framework, следует отметить, что Zend_Pdf еще недостаточно богат набором функций для использования таким образом.

  2. Попросив графического дизайнера создать шаблон, загрузить его с помощью Zend_Pdf, а затем добавить дополнительный контент в it.Zend_Pdf (1.10.2-1.10.7) в этом случае работал довольно хорошо, ЗА ИСКЛЮЧЕНИЕМ случаев, когда пытался создать экземпляр новой страницы и добавить ее в документ - это приводило к множеству ошибок.

  3. Преобразование из HTML в PDF с помощью htmldoc. Этот подход был неудачным, но в основном из-за ограничений в htmldoc.

Я не использовал TCPDF для преобразования HTML в PDF, но, судя по общему качеству кода, я предполагаю, что это будет довольно хорошая работа. (Я действительно подтолкнул TCPDF к ограничения, включая визуализацию графически насыщенных документов в наборах символов RTL, китайском и т. Д., И он работал безупречно). Поэтому, если вы решите сделать это программно, я бы рекомендовал использовать TCPDF, но если у вас есть хороший шаблон от графического дизайнера и вы намерены просто добавить материал сверху, загрузите его с помощью Zend_Pdf и измените его оттуда, это разумный выбор (хотя вы все равно в конечном итоге реализуете перенос слов и некоторые другие базовые вещи).

 1
Author: JamesG, 2010-08-25 06:59:57

Я также рекомендую конвертировать HTML в PDF:

  • Это легче осознать
  • Позже проще изменить макет/дизайн
  • Возможно, вы могли бы повторно использовать некоторый html-код страницы

Когда я однажды создал генерацию PDF для веб-сайта, я использовал html2ps, а затем позже преобразовал postscript в pdf.

 0
Author: TheHippo, 2009-11-28 13:27:32

Я предлагаю программное форматирование.

В мире .net у меня был явно негативный опыт работы с конвертерами html в pdf. Похоже, они делятся на 2 категории:

Те, которые "анализируют" ваш html и пытаются превратить его в pdf. В них часто отсутствуют некоторые действительно фундаментальные функции, такие как таблицы стилей и поддержка чего угодно, кроме макета на основе таблиц.

Те, которые "печатают" ваш html-код на изображение и вставляют его в pdf. Они действительно могут привести к приличный на вид документ. Похоже, они работают, связывая браузер с библиотекой, что вызывает проблемы с потоками и низкую производительность.

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

 0
Author: JeffreyABecker, 2009-11-28 13:58:28