У меня есть документ 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 на веб-сервере.
Что мне не хватает, или как я могу решить эту проблему?
@import
,@media
и@screen
правила, и будет загружать внешние таблицы стилей. Он также поставляется в комплекте со всем необходимым для его работы, хотя есть вещи, которые вы можете установить, чтобы получить лучшую производительность, чем библиотеки по умолчанию. code.google.com/p/dompdfchrome --headless --print-to-pdf="path/to/pdf" https://your_url
самым богатым, быстрым и простым инструментом создания html-pdf crbug.com/603559, поскольку он поддерживает большинство функций html-разработчиков, основанных на веб-разработке, и не сосет сложные сценарии, как большинство других библиотеки и инструменты делают.Ответы:
Важно: Обратите внимание, что этот ответ был написан в 2009 году, и, возможно, он не самый экономически эффективный вариант сегодня, в 2019 году. Онлайн-альтернативы сегодня лучше, чем были тогда.
Вот некоторые онлайн-сервисы, которые вы можете использовать:
Посмотрите на PrinceXML .
Это, безусловно, лучший конвертер HTML / CSS в PDF, хотя он и не бесплатный (но, эй, ваше программирование может быть и бесплатным, поэтому, если это сэкономит вам 10 часов работы, вы свободны дома (так как вам также нужно принять во внимание, что альтернативные решения потребуют от вас установки выделенного сервера с подходящим программным обеспечением)
О, да, я упоминал, что это первое (и, вероятно, единственное) решение HTML2PDF, которое поддерживает полный ACID2 ?
Образцы PrinceXML
источник
Посмотрите на
wkhtmltopdf
. Это открытый исходный код, основанный на webkit и бесплатный.Мы написали небольшой учебник здесь .
РЕДАКТИРОВАТЬ (2017):
Если бы сегодня было что-то строить, я бы больше не пошел этим путем.
Но вместо этого использовал бы http://pdfkit.org/ .
Вероятно, удалив его из всех зависимостей nodejs для запуска в браузере.
источник
После некоторого исследования и общего напряжения решение кажется HTML2PDF . DOMPDF проделал ужасную работу с таблицами, границами и даже умеренно сложным макетом, и htmldoc кажется достаточно надежным, но почти полностью игнорирует CSS, и я не хочу возвращаться к созданию HTML-макета без CSS только для этой программы.
HTML2PDF выглядел самым многообещающим, но у меня все еще была странная ошибка, связанная с нулевыми ссылочными аргументами для node_type Я наконец нашел решение этого. По сути, PHP 5.1.x отлично работал с заменами регулярных выражений (preg_replace_ *) для строк любого размера. PHP 5.2.1 представил конфигурационную директиву php.ini, которая называется pcre.backtrack_limit . Этот параметр конфигурации ограничивает длину строки, для которой выполняется сопоставление. Почему это было введено, я не знаю. Значение по умолчанию было выбрано как 100 000. Почему такая низкая стоимость? Опять не знаю.
Для этого была поднята ошибка в PHP 5.2.1 , которая все еще открыта почти два года спустя .
Что ужасает в этом, так это то, что когда предел превышен, замена просто молча завершается неудачей . По крайней мере, если ошибка была обнаружена и зарегистрирована, у вас будет некоторое представление о том, что произошло, почему и что нужно изменить, чтобы исправить это. Но нет.
Итак, у меня есть HTML-файл 70 КБ, который можно превратить в PDF. Требуются следующие настройки php.ini:
Теперь проницательный читатель мог заметить, что мой HTML-файл меньше, чем 100КБ. Единственная причина, по которой я могу догадаться, почему я столкнулся с этой проблемой, заключается в том, что html2pdf выполняет преобразование в xhtml как часть процесса. Возможно, это захватило меня (хотя почти 50% раздувания кажется странным). В любом случае, вышесказанное сработало.
Теперь html2pdf - это источник ресурсов. Мой файл 70 КБ занимает приблизительно 5 минут и не менее 500-600 МБ ОЗУ для создания 35-страничного файла PDF. К сожалению, недостаточно быстро (пока) для загрузки в режиме реального времени, и использование памяти устанавливает соотношение использования памяти порядка 1000 к 1 (600 МБ ОЗУ для файла 70 КБ), что совершенно нелепо.
К сожалению, это лучшее, что я придумал.
источник
Почему бы вам не попробовать mPDF версии 2.0 ? Я использовал его для создания PDF документа. Работает нормально.
Между тем, mPDF имеет версию 5.7 и активно поддерживается, в отличие от HTML2PS / HTML2PDF.
Но имейте в виду, что с документацией действительно сложно работать. Например, взгляните на эту страницу: https://mpdf.github.io/ .
С помощью этой библиотеки можно выполнить очень простые задачи, связанные с html в pdf, но более сложные задачи потребуют некоторого времени для прочтения и «понимания» документации.
источник
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
1) использовать MPDF !
а) извлечь в
yourfolder
б) создать file.php в
yourfolder
и вставить такой код:в) открыть файл .php из вашего браузера
2) Используйте pdfToHtml !
1) Извлеките pdftohtml.exe в корневую папку:
2) внутри этой папки, в файле anyfile.php , поместите этот код (при условии, что есть также source example.pdf):
3) введите FinalFolder , и будут преобразованные файлы (столько страниц, сколько было в исходном PDF-файле ..)
источник
Оформить заказ TCPDF . Он имеет некоторые функции HTML в PDF, которых может быть достаточно для того, что вам нужно. Это также бесплатно!
источник
Я просто попробовал DOMPDF, и он работал отлично. Я использовал
DIV
и другие элементы уровня блока для позиционирования всего, я строго придерживался CSS 2.1, и он играл очень хорошо.источник
Я предлагаю DocRaptor (который использует
PrinceXML
в качестве «двигателя»)источник
Это уже упоминалось, но я просто хотел бы подтвердить, что mpdf - самый простой, самый мощный и самый бесплатный конвертер HTML в pdf. Небо действительно предел. Вы даже можете сгенерировать PDF динамических пользовательских данных.
Например, клиент хотел систему CMS, чтобы он мог обновить треклист музыки, которую он играл в своем клубе. Это не было проблемой, но он также хотел, чтобы пользователи могли загружать .pdf плейлиста, и поэтому этот загружаемый pdf также должен был обновляться cms. Благодаря mpdf, с некоторыми простыми циклами и переменными переменными, я смог сделать именно это. То, что я думал, заняло бы у меня недели, буквально заняло у меня минуты.
Отличная статья, которая помогла мне начать.
источник
Хорошие новости! Снаппи !!
Snappy - это очень простая библиотека PHP5 с открытым исходным кодом, позволяющая создавать эскизы, снимки или PDF с URL-адреса или HTML-страницы. И ... он использует отличный wktmltopdf на основе webkit
Наслаждайтесь! ^ _ ^
источник
Что ж, если вы хотите найти идеальную библиотеку конвертеров XHTML + CSS в PDF, забудьте об этом. Это далеко не возможно. Потому что это все равно что найти идеальный браузер (XHTML + движок рендеринга CSS). У нас есть один? IE или FF?
У меня был некоторый успех с DOMPDF. Дело в том, что вы должны изменить свой HTML + CSS-код, чтобы он соответствовал принципам работы библиотеки. Кроме этого, у меня довольно хорошие результаты.
См. ниже:
Оригинальный HTML
Преобразование HTML в PDF
источник
HTML2PDF и html2ps , который был первоначально упомянутый в первом посте говорили о пакете 2009 с этой ссылкой
Но есть лучший HTML2PDF
Он основан на TCPDF, хотя частично на французском.
Вы можете иметь верхние или нижние колонтитулы таблицы, которые повторяются на страницах и имеют номера страниц и общее количество страниц. Смотрите его примеры . Я использую его более трех лет и рекомендую его.
источник
Я использую fpdf для создания PDF-файлов с использованием PHP. Пока что у меня хорошо получается производить простые выводы.
источник
В Zezone есть учебник по генерации pdf из php ( часть 1 , часть 2 ) без каких-либо внешних библиотек. Я никогда не реализовывал такого рода решения, но так как это все php, вы можете найти его более гибким для реализации и отладки.
источник
Попробуйте захватить последнюю ночную сборку dompdf - я использовал более старую версию, которая была ужасным ресурсом и занималась рендерингом моего pdf. После ночного захвата отсюда .
Генерация PDF заняла всего несколько секунд - и он был так же хорошо отрисован, как и с PrinceXML / Docraptor . Похоже, они серьезно оптимизировали код dompdf со времени моего последнего использования!
источник
Упоминание Дэррила Хейна о TCPDF , вероятно, отличная идея. Код Никола Асуни довольно удобный и мощный. Единственное, что убивает, это то, что если вы когда-нибудь планируете объединять PDF-файлы с созданным PDF-файлом, у них нет этих функций. Вам нужно будет создать PDF, а затем объединить его, используя что-то вроде PDFTK от Sid Steward (www.pdflabs.com/tools/pdftk-the-pdf-toolkit/).
источник
С точки зрения стоимости использование веб-службы (API) во многих случаях может быть более разумным подходом. Кроме того, отдавая на аутсорсинг этот процесс, вы освобождаете свою собственную инфраструктуру / бэкэнд и - при условии использования уважаемой службы - гарантируете совместимость с настройкой веб-стандартов, времени безотказной работы, коротких сроков обработки и быстрой доставки контента.
Я провел некоторые исследования по большинству веб-сервисов, имеющихся в настоящее время на рынке. Ниже приведены API-интерфейсы, которые, по моему мнению, стоит упомянуть в этой теме, в порядке, основанном на соотношении цены и стоимости. Все они предлагают предварительно составленные классы и пакеты PHP.
Качественный:
Обладая высококачественным движком
PrinceXML
в качестве основы, DocRaptor предлагает наилучшее качество PDF, возвращая хорошо отшлифованные и хорошо преобразованные документы PDF. Тем не менее, служба API pdflayer здесь довольно близка. 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,00 долларов США.
Я использовал все три из них, и этот текст должен помочь любому принять решение без необходимости платить за все из них. Этот текст не был написан для поддержки какого-либо одного продукта, и я не имею никакого отношения ни к одному из продуктов.
источник
Если у вас есть доступ к командной строке, можно использовать PhantomJS для создания
PDF
изURL
(удаленного или локального).Это работает очень хорошо, и это бесплатное решение.
Взгляните на этот пример сценария, созданный для этой конкретной задачи.
источник
Этот вопрос уже довольно старый, но никто не упомянул CutyCapt, так что я буду :)
CutyCapt
источник
Я рекомендую TCPDF или DOMPDF, в этом порядке.
источник
Я не думаю, что класс php будет лучшим для отображения страницы xHtml с помощью css.
Что происходит, когда выходит новое правило CSS? (скоро CSS 3.0 ...)
Лучший способ визуализации HTML-страницы - это, конечно, браузер. Firefox 3.0 может изначально «печатать» в формате pdf, torisugary разработал расширение (печать из командной строки) для его использования. Здесь вы найдете это.
Во всяком случае, есть еще много проблем, связанных с Firefox так же, как PDF-конвертер ...
На данный момент, я думаю, что wkhtmltopdf - лучший (тот, который используется браузером Safari), быстрый, быстрый, потрясающий. Да, и с открытым исходным кодом ... Посмотрите
источник
Я разработал публичный API для создания PDF-файлов из веб-страниц. Он имеет хороший клиентский класс PHP, который делает его очень простым в использовании. Он использует wkhtmltopdf для рендеринга PDF в облаке.
Не нужно ничего особенного в HTML. Нет необходимости в абсолютных URL-адресах в ссылках images / css / js. Работает на localhost (dev машина) тоже.
В настоящее время служба имеет конечные точки в 4 регионах Azure: Восток США, Запад США, Север ЕС, Юго-Восточная Азия.
Это быстро, так как он использует собственный протокол для отправки содержимого веб-страницы в API для преобразования в PDF.
Это надежно, потому что все конечные точки сбалансированы по нагрузке.
Бесплатный аккаунт доступен для тестирования или низкого использования. Подробности на сайте:
https://rotativahq.com
источник
Возможно, вы можете попробовать использовать Tidy перед передачей файла в конвертер. Если один из средств рендеринга захлебнется какой-либо проблемой HTML (например, незакрытым тегом), это может помочь.
источник
Прекрасный рендеринг ничего не значит. Это подтверждает?
Все браузеры делают все возможное, чтобы просто показать что-то на экране, независимо от того, насколько плохой ввод. И, конечно, они не делают то же самое. Если вам нужен тот же рендеринг, что и в FireFox, вы можете использовать его движок рендеринга. Для этого есть генераторы PDF. Хотя это ужасно много работы.
источник
Хотя уже есть много решений, я рекомендую следующие два:
Отличие этих двух API от всех ранее упомянутых решений состоит в том, что, помимо преобразования HTML в PDF с помощью CSS и JavaScript, он также предлагает управление правами на PDF, водяные знаки и шифрование. Поэтому это решение «все в одном» для тех, кто хочет взяться за дело.
Отказ от ответственности: я работаю в Kaiomi, компании, которая управляет обоими этими сайтами.
источник
Есть ли на самом деле HTML для преобразования PDF необходимо происходить на стороне сервера с использованием PHP?
Я только что натолкнулся на jsPDF , клиентское решение, использующее HTML5 / JavaScript. MIT-лицензированный код есть и на GitHub .
источник
TCPDF работает нормально, без зависимостей, бесплатен и постоянно исправляется. Он имеет разумную скорость, если предоставленное содержимое HTML / CSS хорошо отформатировано. Обычно я генерирую от 50 до 300 кБ входных данных HTML (включая CSS) и получаю вывод PDF в течение 1-3 секунд с 10-15 страницами PDF.
Я настоятельно рекомендую использовать библиотеку Tidy в качестве средства форматирования HTML перед отправкой чего-либо в TCPDF.
источник
Я пробовал много разных библиотек для PHP. Все перечисленное я пробовал. На мой взгляд, библиотека TCPDF - лучший компромисс между производительностью и удобством использования. Это очень просто для установки и использования, а также хорошая производительность в небольших средних приложениях. Если вам нужна высокая производительность и очень большой PDF-документ, используйте модуль Zend_PDF , но будьте готовы к кодированию!
источник
Веб-API
Если есть люди, которые всегда ищут подобные вещи, есть бесплатный сайт, который позволяет конвертировать HTML-код и страницы в PDF. Существует также (очень маленький) API, который позволяет вам получить PDF-файл из URL.
Проверьте это здесь
источник
не PHP , а библиотека Java , которая делает это:
Его можно использовать из PHP через
system()
или аналогичный вызов. Хотя это требует XML правильная форма XMLinput
.источник