У меня есть документ HTML (не XHTML), который хорошо отрисовывается в Firefox 3 и IE 7. Он использует довольно простой CSS для стилизации и отлично отрисовывает в HTML.
Теперь мне нужен способ конвертировать его в PDF. Я пробовал:
Я попробовал приложение для Windows под названием Html2Pdf Pilot, которое на самом деле сделало довольно приличную работу, но мне нужно что-то, что как минимум работает на Linux и идеально работает по требованию через PHP на веб-сервере.
Чего мне не хватает, или как я могу решить эту проблему?
Важный: Обратите внимание на то, что этот ответ был записан в 2009, и это не могла бы быть большая часть экономичного решения сегодня в 2019. Альтернативы онлайн лучше сегодня в этом, чем они были тогда.
Вот некоторые онлайн-сервисы, которые можно использовать:
<час>Взглянули на PrinceXML.
Это - определенно лучший HTML/CSS к преобразователю PDF там, хотя это не свободно (Но эй, Ваше программирование не могло бы быть бесплатным также, поэтому если это сохраняет Вас 10 часов работы, Вы дома свободные (так как также необходимо принять во внимание, что альтернативные решения потребуют, чтобы Вы установили выделенный сервер с правильным программным обеспечением)
, О, да, я упоминал, что это является первым (и вероятно только) решение HTML2PDF, которое делает полный ACID2?
Возможно, Вы могли бы попытаться использовать Опрятный прежде, чем вручить файл преобразователю. Если один из рендерера дросселирует на некоторой проблеме HTML (как открытый тег), это могло бы помочь ему.
Прекрасный рендеринг ничего не означает. Это проверяет?
Все браузеры делают большинство, которое они могут, чтобы просто показать чему-то на экране, неважно, как плохо вход. И конечно они не делают того же самого. Если Вы хотите тот же рендеринг как FireFox, Вы могли бы использовать его механизм визуализации. Существуют генераторы PDF для него. Это - очень большая работа, все же.
Я использую fpdf для создания файлов PDF с помощью PHP. Это работает хорошо на меня до сих пор для создания простых выводов.
После некоторого расследования и общего получения по запросу волос решение, кажется, HTML2PDF. DOMPDF сделал ужасное задание с таблицами, границами и даже умеренно сложным макетом и , htmldoc кажется довольно устойчивым, но почти абсолютно не осведомлен CSS, и я не хочу возвращаться к выполнению HTML-разметки без CSS только для той программы.
HTML2PDF смотрел самое многообещающее, но я продолжал иметь эту странную ошибку об аргументах нулевой ссылки node_type. Я наконец нашел решение этого. В основном PHP 5.1.x хорошо работал с заменами regex (preg_replace_ *) на строках любого размера. PHP 5.2.1 представил директиву конфигурации php.ini, названную pcre.backtrack_limit. То, что делает этот параметр конфигурации, является пределами длина строки, для которой сделано соответствие. Почему это было представлено, я не знаю. Значение по умолчанию было выбрано в качестве 100 000. Почему такая низкая стоимость? Снова, никакая идея.
А ошибка была повышена против PHP 5.2.1 для этого , который является, все еще открывают почти два года спустя .
то, Что является ужасающим об этом, является этим, когда предел превышен, замена всего тихо сбои . По крайней мере, если бы ошибка была повышена и зарегистрировалась, у Вас был бы некоторый признак того, что произошло, почему и что измениться для фиксации его. Но нет.
, Таким образом, у меня есть 70k файл HTML для превращений в PDF. Это требует следующих настроек php.ini:
Теперь проницательный читатель, возможно, заметил, что мой файл HTML меньше, чем 100k. Единственная причина, которую я могу предположить относительно того, почему я поразил эту проблему, состоит в том, что html2pdf делает преобразование в xhtml как часть процесса. Возможно, это приняло меня (хотя почти 50%-е чрезмерное увеличение размера кажется нечетным). Безотносительно случая вышеупомянутое работало.
Теперь, html2pdf является пожирателем ресурсов. Мой 70k файл занимает приблизительно 5 минут и по крайней мере 500-600M из RAM для создания файла 35 страниц PDF. Не достаточно быстрый (безусловно) для загрузки в реальном времени, к сожалению, и использования памяти помещает отношение использования памяти в порядок 1000 к 1 (600M RAM для 70k файла), который совершенно смешон.
, К сожалению, это является лучшим, я придумал.
Контроль TCPDF. Это имеет некоторый HTML к функциональности PDF, которая могла бы быть достаточно, для какого Вам нужно. Это также свободно!
CGError
, хотя я помню то, чтобы это было явно упомянутым в Quartz' s сообщения об ошибках (но у меня никогда не было этой определенной ошибки прежде). (Пользователи AppCode: Это doesn' t поддерживают символьные точки останова с 2.1— you' ll должны использовать XCode для этого.)
– Peter Hosey
04.10.2013, 23:03
Только для столкновения потока я попробовал DOMPDF, и это работало отлично. Я использовал DIV
и другие элементы блочного уровня для расположения всего, я сохранил его строго CSS 2.1, и это играло очень приятно.
Существует учебное руководство на devzone Зенда при генерации PDF от php ( часть 2 части 1 , ) без любых внешних библиотек. Я никогда не реализовывал этот вид решения, но так как это - весь php, Вы могли бы найти его более гибким, чтобы реализовать и отладить.
Хорошо, если Вы хотите найти идеальный XHTML+CSS к библиотеке преобразователя PDF, забудьте его. Это совсем не возможно. Поскольку это точно так же, как находит идеальный браузер (механизм визуализации XHTML+CSS). У нас есть тот? IE или FF?
я имел некоторый успех с DOMPDF. Вещь состоит в том, что необходимо изменить код HTML+CSS для движения со способом, которым библиотека предназначена для работы. Кроме этого, у меня есть довольно хорошие результаты.
Посмотрите ниже: