HTML в PDF против программного создания PDF с помощью PHP - PullRequest
8 голосов
/ 28 ноября 2009

У меня есть 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

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

Ответы [ 6 ]

3 голосов
/ 28 ноября 2009

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

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

2 голосов
/ 28 ноября 2009

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

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

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

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

1 голос
/ 25 августа 2010

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

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

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

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

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

1 голос
/ 28 ноября 2009

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

→ см. Список совместимости css .

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

0 голосов
/ 28 ноября 2009

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

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

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

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

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

0 голосов
/ 28 ноября 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...