У меня есть приложение 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 находится на пути.
У меня был большой опыт работы со всеми тремя подходами:
Создание документа программно с использованием 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:
Когда я когда-то создавал создание PDF для веб-сайта, я использовал html2ps, а затем позже конвертировал постскриптум в pdf.
Я предлагаю программировать форматирование.
В мире .net у меня были явно отрицательные впечатления от конвертеров html to pdf. Кажется, они делятся на две категории:
Те, которые «анализируют» ваш html и пытаются превратить его в pdf. Этим часто не хватает некоторых действительно фундаментальных функций, таких как таблицы стилей и поддержки чего угодно, кроме табличного макета.
Те, которые «печатают» ваш html на изображение и вставляют его в pdf. На самом деле они могут создать достойный документ. Кажется, что они работают, связав браузер с библиотекой, что вызывает проблемы с потоками и низкую производительность.
У меня был посредственный опыт с прямым pdf apis, но php, похоже, имеет несколько значительно лучших библиотек на этом фронте.