HTML в PDF против.Программное создание PDF через PHP

StackOverflow https://stackoverflow.com/questions/1812484

  •  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, похоже, есть некоторые значительно лучшие библиотеки в этом направлении.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top