Intereting Posts
Отсутствует метод insert () в Doctrine DBAL Query Builder Новый API Instagram – как вы запрашиваете тегированные носители? Каким образом лучше всего использовать хэш-пароль? Проверьте, изменился ли объект Как использовать omnipay для проверки того, является ли он ожидающим платежа или нет Laravel – модель запроса, если значения содержат определенную строку (взятую из ввода поиска) получение ошибки в отображаемых значениях в Xcode из mysql? Применить одно правило проверки для нескольких полей Объект-объект «некоторая сущность» не может быть найден regex любые URL-адреса или ссылки в php как читать файлы, сохраненные на сервере, используя php и совершать вызовы на эту php-страницу, используя ajax для отображения списка файлов Получить определенный элемент из каждого вспомогательного массива Недостатки PHP продолжают добавлять Symfony2 Ограничитель валидатора GreaterThan на другое свойство parse csv file php

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

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

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

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

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

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

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

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

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

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

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

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

  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 и измените его с помощью разумного выбора (хотя вы все равно в конечном итоге реализуете перенос слов и некоторые другие основные вещи).

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

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

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

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

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

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

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

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