HTML в PDF против.Программное создание PDF через PHP
-
06-07-2019 - |
Вопрос
У меня есть 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.А интеграция с Zend Framework уже в пути.
У меня был достаточный опыт работы со всеми тремя подходами:
<Ол>Создание документа программным способом с использованием TCPDF (который, хотя и был получен из FPDF, поддерживает UTF-8 из коробки). Хотя я большой поклонник Zend Framework, нужно отметить, что Zend_Pdf еще недостаточно богат своим набором функций, чтобы использовать его таким образом.
С помощью графического дизайнера создайте шаблон, загрузите его с помощью Zend_Pdf и добавьте в него дополнительный контент. Zend_Pdf (1.10.2 - 1.10.7) в этом случае работал довольно хорошо, ЗА ИСКЛЮЧЕНИЕМ попыток создать новую страницу и добавить ее в документ - это породило множество ошибок.
Преобразование из HTML в PDF с использованием htmldoc. Этот подход плохо сосал, но в основном из-за ограничений в htmldoc.
Я не использовал TCPDF для преобразования HTML в PDF, но, судя по общему качеству кода, я предполагаю, что он вполне подойдет. (Я действительно раздвинул TCPDF до предела, включая визуализацию графически насыщенных документов в наборах символов RTL, китайском и т. Д., И он работал безупречно). Поэтому, если вы решите сделать это программно, я бы порекомендовал использовать TCPDF, но если у вас есть хороший шаблон от графического дизайнера и вы хотите просто добавить что-то сверху, загрузить его с помощью Zend_Pdf и изменить его там, то разумный выбор (хотя вы по-прежнему будете реализовывать перенос слов и некоторые другие базовые вещи.
Я также рекомендую конвертировать HTML в PDF:
- Это легче осознать
- Легче изменить макет/дизайн позже.
- Вероятно, вы могли бы повторно использовать некоторые HTML-коды страницы.
Когда я однажды создал PDF-файл для веб-сайта, я использовал html2ps а затем позже конвертировал постскриптум в PDF.
Я предлагаю программное форматирование. Р>
В мире .net у меня был явно негативный опыт работы с конвертерами html в pdf. Кажется, они делятся на 2 категории:
Те, которые 'разбирают' ваш html и пытаются превратить его в pdf. В них часто отсутствуют некоторые действительно фундаментальные функции, такие как таблицы стилей и поддержка чего-либо, кроме макета на основе таблицы.
Те, которые «печатают» ваш html на изображение и вставляют его в pdf. Они действительно могут произвести достойно выглядящий документ. Кажется, они работают, связывая браузер с библиотекой, что вызывает проблемы с многопоточностью и низкую производительность Р>
У меня был посредственный опыт работы с прямыми pdf apis, но в php, похоже, есть некоторые значительно лучшие библиотеки в этом направлении. Р>