Преобразование HTML + CSS в PDF

У меня есть документ HTML (не XHTML), который отлично отображается в Firefox 3 и IE 7. Он использует довольно простой CSS для его стилизации и отлично отображает в HTML.

Теперь мне нужен способ конвертировать его в PDF. Я пытался:

  • DOMPDF: у него были огромные проблемы с таблицами. Я выделил свои большие вложенные таблицы, и это помогло (раньше он просто потреблял до 128 МБ памяти, а затем умирал - это мой предел памяти в php.ini), но он создает полный беспорядок в таблицах и, похоже, не получает изображений. Таблицы были просто базовыми элементами с некоторыми стилями границ для добавления линий в различных точках;
  • HTML2PDF и HTML2PS: На самом деле, с этим мне повезло больше. Он визуализировал некоторые изображения (все изображения являются URL-адресами Google Chart), и форматирование таблицы было намного лучше, но, похоже, возникла некоторая сложная проблема, которую я еще не понял, и продолжал умирать с неизвестными ошибками node_type (). Не уверен, куда идти дальше; а также
  • Htmldoc: похоже, это нормально работает с базовым HTML, но почти не поддерживает CSS, поэтому вам нужно делать все в HTML (я не понимал, что это был еще 2001 год в Htmldoc-land ...), поэтому для меня это бесполезно.

Я попробовал приложение для Windows под названием Html2Pdf Pilot, которое действительно выполнило довольно приличную работу, но мне нужно что-то, что как минимум работает в Linux и в идеале запускается по запросу через PHP на веб-сервере.

Что мне не хватает или как решить эту проблему?

Html2Pdf фактически использует встроенный экземпляр IE для рендеринга страницы, а затем преобразует его в PDF - вероятно, через механизм печати IE.

Joel Mueller 24.12.2008 22:31

так как это вопрос 2008 года, dompdf сейчас гораздо более зрелый. ;-)

O.O 15.07.2011 13:03

dompdf теперь поддерживает CSS 2.1 и может работать с правилами @import, @media и @screen, а также загружает внешние таблицы стилей. Он также поставляется в комплекте со всем необходимым для его работы, хотя есть вещи, которые вы можете установить, чтобы получить лучшую производительность, чем библиотеки по умолчанию. code.google.com/p/dompdf

totallyNotLizards 04.10.2012 13:39

Я предполагаю, что правильнее всего сделать так, чтобы браузеры создавали PDF-файл, потому что они единственные, кто выполняет правильный рендеринг. посмотреть этот вопрос stackoverflow.com/q/25574082/39998

David Hofmann 29.08.2014 22:33

Обновление 2015: после изучения множества вариантов мы решили использовать wkhtmltopdf, это хорошая утилита, с которой мы боремся с CSS, потому что у нас есть внешний файл CSS, но затем мы применили трюк, поместив фиктивную ссылку CSS на наш элемент HTML, который мы хотим convert и установив правильный путь он работает как MAGIC !!!

Anshul Nigam 20.01.2015 12:49

Есть две версии HTML2PDF. Действительно старый (2009 г.), на который я ссылаюсь, и более новый французский, о котором я говорю в своем ответе.

Luke Wenke 07.05.2015 13:44

См. Также stackoverflow.com/q/10641667/287948

Peter Krauss 03.07.2015 21:03

@HendraUzia К сожалению, у dompdf все еще есть огромные проблемы с отображением таблиц. Добавляет пустые страницы в документ

Ejaz 23.10.2015 08:43

Вот учебник по DOMPDF. advancetechtutorial.blogspot.com/2015/09/…

Md. Mahabubur Rahman 21.02.2016 12:48

вы можете преобразовать свой html со стилями в холст с помощью html2canvas, затем преобразовать холст в изображение с помощью canvasObj.toDataURL ("image / jpeg"), добавить изображение в DOM и передать его своему генератору PHP

b_dubb 01.06.2016 17:28

Как насчет использования Google Chrome, там вы получаете возможность сохранить как pdf из опции «Печать».

Abhishek Sen 03.07.2016 22:02

проверьте, что эта библиотека php5 github.com/KnpLabs/snappy проста в использовании и использует "wkhtmltopdf"

Dastagir 04.01.2017 12:44

Я считаю, что скоро все найдут Chrome / Chromium headless chrome --headless --print-to-pdf = "path/to/pdf" https://your_url как самый богатый, самый быстрый и простой инструмент для создания HTML в PDF crbug.com/603559, поскольку он поддерживает большинство функций HTML, разработчики полагаются на веб-разработку и не используют сложные сценарии, как большинство других библиотек и инструментов. делать.

Ebrahim Byagowi 22.05.2017 11:41

Вы правы, Chrome headless должен хорошо отображаться, но он будет работать на узле, а не на php.

Davey 27.07.2017 11:27

Этот вопрос не по теме в SO, но по теме в softwarerecs.SE. См. Как преобразовать HTML с помощью CSS в PDF?.

Martin Thoma 21.09.2017 18:21

Этот вопрос возвращает мои воспоминания о PHP и DOMPDF в 2010 году. :)

Gaurang Patel 08.03.2018 01:22

Dompdf - еще один вариант. github.com/dompdf/dompdf

Ric 22.07.2018 09:09

@Hendra Uzia Недостаточно зрелый ... DOM PDF абсолютно худший ... только что сделал быстрый окончательный тест - таблица 100% с 2x 50% столбцами ... с IMG в каждом со 100% шириной ... полностью провалилась .. и выводить миниатюрные изображения

Martin Zvarík 05.12.2018 19:10

Использую TCPDF. Это хорошо, но в нем отсутствуют возможности CSS.

CharlesWashington 06.08.2019 14:03

Сейчас 2020 год, и мне очень сложно что-то создавать с помощью dompdf. И я не говорю о необходимости использовать CSS2. Основные вещи, такие как рендеринг таблицы, плавающие элементы не работают, все глючит, и вы должны задаться вопросом, почему границы уходят слишком далеко влево или почему у первого элемента нет границы. Попытка обойти встроенные блоки и таблицы div, чтобы заставить его работать.

Maciej Krawczyk 01.02.2020 11:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1 675
21
909 218
30
Перейти к ответу Данный вопрос помечен как решенный

Ответы 30

Хороший рендеринг ничего не значит. Подтверждает ли это?

Все браузеры делают все возможное, чтобы просто показать что-то на экране, независимо от того, насколько плохой ввод. И, конечно, они не делают то же самое. Если вы хотите такой же рендеринг, что и FireFox, вы можете использовать его движок рендеринга. Для этого есть генераторы pdf. Однако это очень большая работа.

Возможно, вы могли бы попробовать использовать Tidy, прежде чем передавать файл конвертеру. Если один из модулей рендеринга задыхается от какой-либо проблемы с HTML (например, незакрытого тега), это может помочь.

Да, верный момент, но я уже думал об этом. В моем HTML нет ни непревзойденных, ни нестандартных тегов.

cletus 24.12.2008 12:36

В Zend devzone есть руководство по созданию PDF-файлов из php (часть 1, часть 2) без каких-либо внешних библиотек. Я никогда не реализовывал такого рода решения, но, поскольку это все PHP, вы можете найти его более гибким для реализации и отладки.

Да, но это не конвертирует HTML ... это необработанное создание PDF

Martin Zvarík 05.12.2018 18:19

Что ж, если вы хотите найти идеальную библиотеку конвертера XHTML + CSS в PDF, забудьте об этом. Это далеко не возможно. Потому что это все равно, что найти идеальный браузер (механизм рендеринга XHTML + CSS). У нас есть такой? IE или FF?

У меня был некоторый успех с DOMPDF. Дело в том, что вам нужно изменить свой код HTML + CSS, чтобы он соответствовал принципу работы библиотеки. В остальном у меня неплохие результаты.

См. ниже:

Исходный HTML

Конвертация HTML в PDF

После некоторого исследования и общего выдергивания волос решение кажется HTML2PDF. DOMPDF ужасно поработал с таблицами, границами и даже умеренно сложным макетом, а htmldoc кажется достаточно надежным, но почти полностью игнорирует CSS, и я не хочу возвращаться к созданию макета HTML без CSS только для этой программы.

HTML2PDF выглядел наиболее многообещающим, но у меня продолжалась странная ошибка, связанная с нулевыми ссылочными аргументами для node_type. Я наконец нашел решение этого. По сути, PHP 5.1.x отлично работал с заменами регулярных выражений (preg_replace_ *) на строки любого размера. PHP 5.2.1 представил конфигурационную директиву php.ini под названием pcre.backtrack_limit. Этот параметр конфигурации ограничивает длину строки, для которой выполняется сопоставление. Почему это было введено, я не знаю. Значение по умолчанию было выбрано 100000. Почему такое низкое значение? Опять же, без понятия.

ошибка была поднята против PHP 5.2.1 для этого, который все еще открыт почти два года спустя.

Что ужасно в этом, так это то, что при превышении лимита заменяется просто тихо терпит неудачу. По крайней мере, если бы ошибка возникла и была зарегистрирована, у вас было бы некоторое представление о том, что произошло, почему и что нужно изменить, чтобы исправить это. Но нет.

Итак, у меня есть файл HTML размером 70 КБ, который нужно преобразовать в PDF. Для этого требуются следующие настройки php.ini:

  • pcre.backtrack_limit = 2000000; # возможно больше, чем мне нужно, но это нормально
  • memory_limit = 1024M; # да, один гигабайт; а также
  • max_execution_time = 600; # да, 10 минут.

Проницательный читатель, возможно, заметил, что размер моего HTML-файла меньше 100 КБ. Единственная причина, по которой я могу догадаться, почему я столкнулся с этой проблемой, заключается в том, что html2pdf выполняет преобразование в xhtml как часть процесса. Возможно, это завело меня (хотя почти 50% -ное раздувание кажется странным). Как бы то ни было, вышеуказанное сработало.

Теперь html2pdf потребляет много ресурсов. Для создания 35-страничного PDF-файла моему файлу размером 70 КБ требуется примерно 5 минут и не менее 500-600 МБ ОЗУ. К сожалению, недостаточно быстро (далеко) для загрузки в реальном времени, а использование памяти приводит к соотношению использования памяти порядка 1000 к 1 (600 МБ ОЗУ для файла размером 70 КБ), что совершенно нелепо.

К сожалению, это лучшее, что я придумал.

@cletus, пожалуйста, расскажите мне о стабильной версии HTML2PDF. Приведенный выше пример ссылки устарел

Ripa Saha 28.06.2013 15:27

Для последней версии см. github.com/spipu/html2pdf

Luke Wenke 29.08.2016 08:55

Мрачная опечатка становится все мрачнее: коэффициент использования памяти порядка 10 000: 1 lol.

MickLH 20.11.2016 23:31

Работает так же плохо, как mPDF ... быстрее, но не точно ... и преобразование шрифтов TTF невероятно болезненно ... у них даже есть независимая библиотека tc-lib-pdf-font только для генерации шрифтов

Martin Zvarík 05.12.2018 18:41
Ответ принят как подходящий

Важный: Обратите внимание, что этот ответ был написан в 2009 году, и, возможно, это не самое экономичное решение на сегодняшний день в 2019 году. Онлайн-альтернативы сегодня лучше, чем они были тогда.

Вот несколько онлайн-сервисов, которыми вы можете воспользоваться:


Взгляните на PrinceXML.

Это определенно лучший конвертер HTML / CSS в PDF, хотя он и не бесплатный (но, эй, ваше программирование тоже может быть платным, поэтому, если это сэкономит вам 10 часов работы, вы дома бесплатно (так как вам также нужно учтите, что альтернативные решения потребуют от вас установки выделенного сервера с правильным программным обеспечением)

О да, я уже упоминал, что это первое (и, вероятно, единственное) решение HTML2PDF, которое полностью поддерживает ACID2?

Образцы PrinceXML

Кажется, вы можете скачать только настольную версию. Я действительно хотел бы попробовать серверную версию. Но настольная версия проделала превосходную работу (такая же, как моя последняя версия html2pdf, но практически мгновенно). Спасибо за рекомендацию.

cletus 12.01.2009 12:19

Моя компания написала веб-сервис, построенный на базе Prince. Значительно более низкие первоначальные затраты и возможность использования без необходимости устанавливать что-либо: docraptor.com

Joel Meador 11.01.2011 11:31

Я тоже использовал DocRaptor. Отличный способ воспользоваться преимуществами Prince, не платя за дорогостоящую лицензию. Поздравляю с отличным продуктом, Джоэл.

Nate365 15.01.2011 03:30

Слишком дорого. WKHTMLTOPDF (см. Другой ответ) бесплатен, выполняет свою работу и использует webkit, что потрясающе.

thomallen 18.04.2012 04:17

Prince или DocRaptor плохо справляются с недействительными входными данными. wkhtmltopdf или pdfcrowd имеют гораздо лучший рендеринг по более низкой цене.

A21z 16.11.2012 14:34

есть Saas-сервис такого же или лучшего качества за небольшую часть цены - см. htm2pdf.co.uk

user1914292 17.02.2013 12:13

Я предполагаю, что правильнее всего сделать так, чтобы браузеры создавали pdf-файл, потому что они единственные, кто выполняет правильный рендеринг css / js. посмотреть этот вопрос stackoverflow.com/q/25574082/39998

David Hofmann 29.08.2014 22:33

Если у вас есть доступ к командной строке и вы НЕ хотите платить 3500 долларов, PhantomJS с этим скриптом: github.com/ariya/phantomjs/blob/master/examples/rasterize.js может быть решением - это бесплатный и простой способ!

chjortlund 08.10.2014 18:16

Одним из огромных преимуществ является то, что механизм компоновки Prince поддерживает все поля страницы: ссылка на сайт. Но цена действительно кое-что.

Ronnie 25.11.2014 13:05

В самом деле? Никто здесь не упомянул FPDF?

technology101010 08.04.2018 21:40

@ technology101010 нет. потому что этот вопрос касается преобразования html в pdf. Не создавать PDF-файлы с нуля.

SchizoDuckie 10.04.2018 14:14

Какую альтернативу без Интернета вы бы порекомендовали на 2018 год?

DFSFOT 11.06.2018 20:13

@DFSFOT: Определенно pdfshift. Проверь их!

SchizoDuckie 12.06.2018 00:48

@SchizoDuckie PDFShift работает только с платформой, верно? Вы получаете API-ключ и просто отправляете его им? Я не могу использовать это, потому что бесплатный план ограничен, и мне нужно сгенерировать PDF-файлы для проекта клиента, у меня не может быть таких ограничений, и я не могу заставить их платить за это. Кроме того, это выглядит очень надежным решением, просто не подходящим для меня. :(

DFSFOT 13.06.2018 01:13

Я знаю, что это старая тема, но мы написали сервис под названием [cloudlayer.io] (cloudlayer.io), который может сделать это дешевле, чем любой из упомянутых выше. Мы также поможем вам интегрироваться и тесно сотрудничать с вами или разработчиками над проектом.

emalamisura 06.12.2020 18:43

Просто чтобы поднять тему, я попробовал DOMPDF, и он отлично сработал. Я использовал DIV и другие элементы блочного уровня, чтобы расположить все, я строго придерживался CSS 2.1, и он играл очень хорошо.

Я использую fpdf для создания файлов PDF с помощью PHP. У меня пока хорошо получается производить простые результаты.

Оформить заказ TCPDF. Он имеет некоторые функции HTML в PDF, которых может хватить для того, что вам нужно. Это также бесплатно!

его поддержка для рендеринга html довольно ограничена, вы можете прочитать это: tcpdf.org/doc/classTCPDF.html#ac3fdf25fcd36f1dce04f92187c621‌ 407

O.O 15.07.2011 12:17

но стиль css не работает

KBK 16.11.2015 13:38

Я не думаю, что класс php будет лучшим для рендеринга страницы xHtml с помощью css.

Что произойдет, когда выйдет новое правило css? (скоро css 3.0 ...)

Очевидно, лучший способ визуализировать html-страницу - это браузер. Firefox 3.0 может изначально «печатать» в формате pdf, torisugary разработал расширение (печать из командной строки) для его использования. Вот и найдешь.

В любом случае, есть еще много проблем с запуском firefox просто в качестве конвертера pdf ...

На данный момент я думаю, что wkhtmltopdf - лучший (это тот, который используется браузером Safari), быстрый, быстрый, потрясающий. Да, тоже с открытым исходным кодом ... Посмотри

PHP полезен, если вы хотите вывести какую-либо официальную документацию, такую ​​как квитанция для пользователя, и вы можете использовать CSS, чтобы она выглядела красиво.

Luke Wenke 29.08.2016 09:12

Взгляните на wkhtmltopdf. Это открытый исходный код, основанный на webkit и бесплатный.

Мы написали небольшой туториал здесь.

РЕДАКТИРОВАТЬ (2017):

Если бы он хотел что-то построить сегодня, я бы больше не пошел по этому пути. Но вместо этого использовал бы http://pdfkit.org/. Вероятно, лишив его всех зависимостей nodejs для запуска в браузере.

Этот работает на лучших предпосылках ИМО. Ускорить преобразование существующего рендерера вместо того, чтобы писать его с нуля - нетривиальная задача. Кроме того, Webkit написан на C++ и, следовательно, намного быстрее и требует гораздо меньше ресурсов, чем реализация на основе PHP.

Koobz 15.02.2010 15:36

Это здорово. К сожалению, это требует, чтобы клиентские библиотеки X11 были установлены на сервере.

respectTheCode 19.05.2011 19:00

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

Abhi Beckert 18.09.2011 15:23

@Mic: жаль, что это двоичный код, вам нужен root-доступ к серверу, чтобы установить двоичный код. В планах общего / реселлерского хостинга вы можете забыть использовать этот WKhtmlToPDF.

Marco Demaio 20.10.2011 19:10

ПРЕДУПРЕЖДЕНИЕ! Если вы используете wkhtmltopdf (по крайней мере, в моей системе, XAMPP в 64-разрядной версии Windows 7), во всех случаях, которые я пробовал, изображения .gif не отображаются в файле PDF. Я попробовал ряд обходных решений, предложенных в разных местах, например, включение «ширины» и «высоты» и запись URI в соответствии с различными соглашениями. Ничто из того, что я пробовал, не приводило к появлению .gif (в частности, даже предложения «ширина» и «высота», которые я пробовал как с использованием встроенных стилей, так и с использованием архаичных, необработанных атрибутов HTML «ширина» и «высота»). Однако замена изображений на .jpg сработала с первой попытки.

Dan Nissenbaum 18.11.2011 09:48

Недавно я установил wkhtmltopdf на Virtualbox CentOS 6, и он работал нормально. Вам не обязательно нужен root-доступ, есть статические двоичные файлы, которые вы можете получить и использовать (проверено на вышеупомянутой CentOS). Я слышал, что отсутствие X11 может быть проблемой, но не для меня. Однако это правда, что гифки вообще не работают. Я конвертирую их в PNG на лету и обычно стараюсь предпочесть другие форматы.

Joel Peltonen 18.09.2012 18:06

WKHTMLTOPDF очень хорош. Прежде чем использовать его, я проделал свою работу, конвертировав много HTML в PDF за один день. Но с WKHTMLTPDF теперь я делаю свою работу по их преобразованию всего за 15 минут.

Fitrah M 21.02.2013 07:55

Эта абстракция довольно хороша, хотя mikehaertl.github.io/phpwkhtmltopdf

saada 18.11.2013 01:33

где он хранит преобразованный файл pdf в windows env, например. ВАМП? Когда я запускаю команду через командный инструмент, он показывает прогресс и завершение, но я не могу найти выходной файл на своем компьютере? лол .. пожалуйста, помогите

Aditya P Bhatt 28.11.2013 14:50

@AbhiBeckert: У меня была такая же проблема с Debian и Fedora, и годы спустя она, кажется, была обнаружена и решена: github.com/wkhtmltopdf/wkhtmltopdf/issues/45.

Daniel Andersson 07.04.2014 11:24

Коммерческие услуги были для нас слишком дорогими, поэтому мы реализовали WKHTMLTOPDF как бесплатную облачную службу html2pdfrocket.com для всех, а затем использовали ее сами для наших клиентов. Мы сделали это таким образом, чтобы нашим клиентам не приходилось устанавливать исполняемые файлы на свои серверы и т. д., И они работали на разных платформах. Я определенно оцениваю WKHTMLTOPDF, если вы создаете свой собственный сервис.

eagle779 09.04.2014 05:08

Действительно, очень мило. Мне просто интересно, возможно ли, чтобы в выходном pdf не было выделяемого текста? (Я нахожусь в Win7 Home.) Узнаваемый текст делает PDF-файл хрупким, когда дело доходит до печати.

user3187724 12.09.2014 16:36

Просто открыл репозиторий Github, чтобы показать, как сгенерировать счет в формате PDF DinA4 с использованием HTML5 + CSS + PHP + wkhtmltopdf. Легко регулируется. github.com/rockdaboot/invoice-html5-to-pdf

rockdaboot 02.05.2016 18:10

wkhtmltopdf довольно хорош. Я только что создал HTTP API с PHP, который позволяет передавать URL-адрес веб-страницы и конвертирует его из HTML в PDF с помощью wkhtmltopdf: github.com/Dellos7/dhtml2pdf

David López 10.03.2018 17:13

Установка на CentOS 6/7 проста yum --enablerepo=epel-testing install wkhtmltopdf Xvfb. Обратите внимание, что wkhtml эмулирует браузер, поэтому, если на странице загружаются шрифты Google, необходимо включить доступ в Интернет. Также при использовании через php-fpm необходимо установить переменную среды с путем к исполняемому двоичному файлу, например. в /etc/php-fpm.d/www.conf установите env[PATH] = "/usr/bin", поскольку дочерний процесс fpm по умолчанию очищает родительскую среду.

lubosdz 12.06.2018 12:59

Почему бы вам больше не использовать wkhtmltopdf?

Hashim Aziz 31.05.2020 02:05

Вероятно, потому что движок не поддерживает новые функции html / css / js, так как он некоторое время не обновлялся. @Прометей

lkraider 16.06.2020 22:36

Почему бы вам не попробовать mPDF версии 2.0? Я использовал его для создания PDF документа. Работает нормально.

Между тем mPDF находится в версии 5.7 и активно поддерживается, в отличие от HTML2PS / HTML2PDF.

Но имейте в виду, что с документацией действительно сложно справиться. Например, взгляните на эту страницу: https://mpdf.github.io/.

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

Я попробовал несколько из предложенных здесь. Пока что этот был загружен и работал из коробки без каких-либо проблем, и документы действительно потрясающие по сравнению с остальными. Инструкции по применению четко написаны.

Smith Smithy 16.09.2013 00:55

mPDF вызывает у меня серьезные затруднения при отправке HTML-тегов с фоном изображения или тегов из базы данных: mPDF error: IMAGE Error (http://www.example.com/folder/image.jpg): Error parsing image file - image type not recognised, and not supported by GD imagecreate

Stefan 10.08.2014 01:45

Версия 6.0 работает точно так же, как и ожидалось: включите ее (или загрузите во фреймворк), создайте экземпляр, заполните своим материалом, выведите его так или иначе ... Вот и все!

toesslab 05.02.2015 22:26

Что ж, MPDF работает хорошо, правда! Но код и документация несовместимы - действительно сложно выполнить более сложную задачу, например. составление письма по din-норме.

Qullbrune 13.03.2015 13:55

Утверждает, что он намного медленнее, чем html2fpdf. Но для базового контента я думал, что это достаточно быстро (счета, отчеты и т. д.). Огромный плюс для mPDF в том, что почти нет требований к расширению PHP (работает из коробки на виртуальном хостинге).

Joao 13.02.2016 22:08

Лицензирование также улучшилось в лучшую сторону. Mpdf - это способ создать PDF-файл из HTML и CSS.

Nitin 05.11.2017 00:04

Я не рекомендую 5.7 для части вопроса, касающейся CSS. Не ждите от своего HTML особого стиля.

Henrik Erlandsson 13.02.2018 18:23

Упоминание Даррилом Хайном TCPDF выше, вероятно, отличная идея. Код Никола Асуни довольно удобный и мощный. Единственный убийца - если вы когда-нибудь планируете объединить PDF-файлы с созданным PDF-файлом, у него нет этих функций. Вам нужно будет создать PDF-файл, а затем объединить его, используя что-то вроде PDFTK от Сида Стюарда (www.pdflabs.com/tools/pdftk-the-pdf-toolkit/).

Я предлагаю DocRaptor (который использует PrinceXML в качестве "двигателя")

К сожалению, невозможно использовать, если вы хотите создавать большие PDF-файлы с большим количеством изображений. Я думаю, что есть ограничение по времени на запросы 60 секунд, и если Docraptor нужно загрузить много файлов, это будет превышено, и файл не будет создан.

Vilhelm 09.06.2011 13:55

Проблема, о которой упоминал Вильгельм, исправлена.

illbzo1 29.12.2011 01:08

Попробуйте взять последнюю ночную сборку dompdf - я использовал старую версию, которая требовала ужасных ресурсов и требовала целую вечность, чтобы отобразить мой PDF-файл. После того, как вы взяли еженедельник от здесь.

Для создания PDF-файла потребовалось всего несколько секунд - и он был так же хорошо отрисован, как и с PrinceXML / Докраптор. Похоже, они серьезно оптимизировали код dompdf с тех пор, как я его использовал в последний раз!

dompdf - действительно отличный вариант. Я использовал два раза, и это очень просто. Рекомендую попробовать dompdf. Вот ссылка на официальный репозиторий github: github.com/dompdf/dompdf

Rituparna sonowal 07.08.2016 02:04

Хорошие новости! Мгновенно !!

Snappy - это библиотека PHP5 с открытым исходным кодом очень просто, позволяющая создавать эскизы, снимки или PDF-файлы из URL-адреса или HTML-страницы. И ... он использует wkhtmltopdf на основе веб-набора отлично

Наслаждаться! ^ _ ^

Я создал HTTP API, использующий Snappy (на основе wkhtmltopdf). Вы можете передать URL-адрес и преобразовать веб-страницу из HTML в PDF: github.com/Dellos7/dhtml2pdf

David López 10.03.2018 17:14

Этот вопрос уже довольно старый, но я не видел, чтобы кто-нибудь упоминал CutyCapt, поэтому я буду :)

CutyCapt

CutyCapt is a small cross-platform command-line utility to capture WebKit's rendering of a web page into a variety of vector and bitmap formats, including SVG, PDF, PS, PNG, JPEG, TIFF, GIF, and BMP

не PHP, а Библиотека Ява, который делает вот что:

Flying Saucer takes XML or XHTML and applies CSS 2.1-compliant stylesheets to it, in order to render to PDF

Его можно использовать из PHP через system() или аналогичный вызов. Хотя для этого требуется XML правильного формата input.

Об этом уже упоминалось, но я просто хотел бы подтвердить, что mpdf - это самый простой, самый мощный и самый бесплатный конвертер HTML в pdf. Небо действительно предел. Вы даже можете создать PDF-файл с динамическими данными, созданными пользователями.

Например, клиенту нужна была система CMS, чтобы он мог обновлять список треков музыки, которую он играл в своем клубе. Это не было проблемой, но он также хотел, чтобы пользователи могли загружать .pdf плейлиста, и поэтому этот загружаемый pdf-файл также должен был быть обновлен cms. Благодаря mpdf, с некоторыми простыми циклами и перемежающимися переменными я смог это сделать. То, что, как я думал, займет у меня недели, буквально заняло у меня минуты.

Отличный статья, который помог мне начать работу.

PDF-файл со списком воспроизведения. Боже, помоги мне.

Henrik Erlandsson 13.02.2018 18:22

Я рекомендую TCPDF или DOMPDF именно в таком порядке.

Я пробовал много разных библиотек для PHP. Все перечисленное я перепробовал. На мой взгляд, библиотека TCPDF - лучший компромисс между производительностью и удобством использования. Его очень просто установить и использовать, а также хорошая производительность в небольших и средних приложениях. Если вам нужна высокая производительность и очень большой PDF-документ, используйте модуль Zend_PDF, но будьте готовы к написанию кода!

Zend PDF не может конвертировать из HTML

Martin Zvarík 05.12.2018 18:52

Действительно ли преобразование HTML в PDF нужно происходит на стороне сервера с использованием PHP?

Я только что наткнулся на jsPDF, клиентское решение, использующее HTML5 / JavaScript. Лицензированный MIT код находится на GitHub тоже.

для меня библиотека очень ограничена

YXN 12.05.2017 08:07

1) используйте MPDF!

а) извлечь в yourfolder

б) создать file.php в yourfolder и вставить такой код:

<?php
include('../mpdf.php');
$mpdf=new mPDF();
$mpdf->WriteHTML('<p style = "color:red;">Hallo World<br/>Fisrt sentencee</p>');
$mpdf->Output();   exit;
 ?>

в) откройте file.php из вашего браузера




2) Используйте pdfToHtml!

1) распакуйте pdftohtml.exe в корневую папку:

2) внутри этой папки в файле anyfile.php поместите этот код (при условии, что есть также исходный файл example.pdf):

<?php
$source = "example.pdf";
$output_fold = "FinalFolder";

    if (!file_exists($output_fold)) { mkdir($output_fold, 0777, true);}
$result= passthru("pdftohtml $source $output_fold/new_filename",$log);
//var_dump($result); var_dump($log);
?>

3) введите FinalFolder, и будут преобразованные файлы (столько же страниц, сколько было в исходном PDF ..)

Я бы попробовал GrabzIt, их API поддерживает CSS, JavaScript и большинство других типов ресурсов. На него просто нужно ссылаться с помощью абсолютного URL-адреса или сделать его встроенным и включить в HTML-код, отправляемый в службу. Попробуйте здесь: grabz.it/html-to-pdf-image-api.aspx

user676505 05.12.2016 18:20

ГрабзЭто не бесплатно

Chatoxz 26.06.2017 15:48

TCPDF работает нормально, без зависимостей, бесплатен и постоянно исправляется. Он имеет разумную скорость, если предоставленное содержимое HTML / CSS хорошо отформатировано. Обычно я генерирую от 50 до 300 КБ входного HTML (включая CSS) и получаю PDF-файл в течение 1-3 секунд с 10-15 PDF-страницами.

Я настоятельно рекомендую использовать библиотеку аккуратный в качестве средства форматирования HTML перед отправкой чего-либо в TCPDF.

Веб-API

Если есть люди, которые всегда ищут такие вещи, есть веб-сайт бесплатно, который позволяет конвертировать html-код и страницы в pdf. Существует также (очень маленький) api, который позволяет вам получать файл PDF по URL-адресу.

Проверить это здесь

Хотя уже существует множество решений, я рекомендую следующие два:

  1. HTM2PDF - предлагает API для преобразования HTML в PDF, а также имеет PHP SDK, что упрощает реализацию на PHP; Он предлагает выбор местоположения серверов в Европе, Азии и США.
  2. PDFmyURL - предлагает API, который также преобразует URL и HTML в PDF, с примерно той же функциональностью, что и HTM2PDF, но работает в ландшафте с балансировкой нагрузки и существует немного дольше

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

Отказ от ответственности: я работаю в Kaiomi, компании, которая управляет обоими этими веб-сайтами.

Я бы не хотел полагаться на сервис, когда это выставлено на продажу. Учитывая тот факт, что он не был продан на том аукционе, я могу только предположить, что он будет продан в ближайшем будущем?

Robin van Baalen 31.07.2014 21:31

на самом деле моя компания приобрела его через некоторое время после аукциона ....

user1914292 03.08.2014 22:21

В таком случае, полагаю, не о чем беспокоиться.

Robin van Baalen 05.08.2014 17:34

Если у вас есть доступ к командной строке, можно использовать PhantomJS для создания PDF из URL (удаленного или локального).

Это действительно хорошо работает, и это бесплатное решение.

Взгляните на этот сценарий пример, созданный именно для этой проблемы.

но у вас могут быть проблемы со шрифтами (веб-шрифтами)

Mihai Crăiță 07.04.2018 10:26

HTML2PDF и HTML2PS, который изначально упоминался во вступительном посте, говорил о пакете 2009 года с этим ссылка на сайт

Но есть HTML2PDF получше

Он основан на TCPDF, хотя частично на французском языке.

У вас могут быть верхние или нижние колонтитулы таблиц, которые повторяются на страницах и содержат номера страниц и общее количество страниц. См. его примеры. Пользуюсь им уже более трех лет и рекомендую.

Почему это не наверху? Он работает без каких-либо дополнительных зависимостей и составляет достаточно хорошо для большинства приложений, не тратя 3800 долларов!

degenerate 25.06.2015 20:11

С точки зрения стоимости использование веб-службы (API) во многих случаях может быть более разумным подходом. Кроме того, передавая этот процесс на аутсорсинг, вы освобождаете свою собственную инфраструктуру / серверную часть и - при условии, что вы пользуетесь услугами уважаемой службы - обеспечиваете совместимость с настройкой веб-стандартов, временем безотказной работы, коротким временем обработки и быстрой доставкой контента.

Я провел некоторое исследование большинства веб-сервисов, представленных в настоящее время на рынке, ниже приведены API-интерфейсы, которые, как мне кажется, стоит упомянуть в этой теме, в порядке, основанном на соотношении цена / стоимость. Все они предлагают готовые классы и пакеты PHP.

  1. pdflayer.com - Стоимость: $ - Качество: ☆☆☆☆
  2. docraptor.com - Стоимость: $$$ - Качество: ☆☆☆☆☆
  3. pdfcrowd.com - Стоимость: $$ - Качество: ☆☆☆

Качество:

Имея в основе высококачественный движок PrinceXML, DocRaptor явно предлагает лучшее качество PDF, возвращая отполированные и хорошо преобразованные PDF-документы. Однако служба pdflayer API здесь довольно близко. Pdfcrowd не обязательно оценивается по качеству, но по скорости обработки.

Расходы:

pdflayer.com - Как указано выше, наиболее экономичным вариантом здесь является pdflayer.com, предлагающий полностью бесплатный план подписки на 100 ежемесячных PDF-файлов и премиальные подписки в диапазоне от 9,99 до 119,99 долларов США. Стоимость 10 000 PDF-документов в месяц составляет 39,99 долларов США.

docraptor.com - Предлагается 7-дневный бесплатный пробный период. Тарифные планы премиум-класса варьируются от 15 до 2250 долларов. Стоимость 10 000 PDF-документов в месяц составляет ~ 300 долларов США.

pdfcrowd.com - Предлагает 100 PDF-файлов однажды бесплатно. Тарифные планы премиум-класса варьируются от 9 до 89 долларов. Стоимость 10 000 PDF-документов в месяц составляет ~ 49 долларов США.

Я использовал все три из них, и этот текст должен помочь любому принять решение без необходимости платить за все из них. Этот текст не был написан для поддержки какого-либо продукта, и я не имею отношения к какому-либо из этих продуктов.

Спасибо за обмен. Я исследовал все варианты целый день и сосредоточился больше на бесплатных библиотеках или покупке библиотеки. Ваш ответ поможет мне снова подумать. Я думаю, для малого бизнеса это самый экономичный и простой способ использования веб-сервисов. Для pdflayer.com; менее 100 долларов в год, чтобы окупиться, требуется 20 или 30 лет, но я не думаю, что мы уедем в тот же мир 20 лет спустя :)

freewill 25.02.2016 16:14

Я разработал общедоступный API для создания файлов PDF с веб-страниц. У него есть хороший клиентский класс PHP, который делает его очень простым в использовании. Он использует wkhtmltopdf для рендеринга PDF-файла в облаке.

Не нужно ничего особенного в HTML. Нет необходимости в абсолютных URL-адресах в ссылках images / css / js. Также работает на localhost (dev-машина).

В настоящее время у службы есть конечные точки в 4 регионах Azure: Восток США, Запад США, Север ЕС, Юго-Восточная Азия.

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

Это надежно, потому что все конечные точки сбалансированы по нагрузке.

Бесплатная учетная запись доступна для тестирования или небольшого использования. Подробности на сайте:

https://rotativahq.com

Другие вопросы по теме