Конвертировать HTML + CSS в PDF с PHP? [закрыто]

У меня была такая же проблема, когда вручную компилировалась через командную строку, мое решение заключалось в том, что я не включил каталог -sourcepath, так что все файлы java-файлов поддиректории тоже были бы скомпилированы!

1549
задан 6 revs, 6 users 64% 2 May 2018 в 21:46
поделиться

13 ответов

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

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

<час>

Взглянули на PrinceXML.

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

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

Образцы PrinceXML

536
ответ дан 15 revs, 12 users 41% 2 May 2018 в 21:46
поделиться

Прекрасный рендеринг ничего не означает. Это проверяет?

Все браузеры делают большинство, которое они могут, чтобы просто показать чему-то на экране, неважно, как плохо вход. И конечно они не делают того же самого. Если Вы хотите тот же рендеринг как FireFox, Вы могли бы использовать его механизм визуализации. Существуют генераторы PDF для него. Это - очень большая работа, все же.

7
ответ дан Stephan Eggermont 2 May 2018 в 21:46
поделиться

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

9
ответ дан PhiLho 2 May 2018 в 21:46
поделиться

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

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

Посмотрите ниже:

Исходный HTML Преобразования HTML

к PDF

25
ответ дан datasn.io 2 May 2018 в 21:46
поделиться
  • 1
    @PeterHosey в XCode, можно установить условную точку прерывания, которая я уверен, что Вы знаете..., но условие, являющееся для некоторого плавания f, f! (сам) =f только верен для NaN – Grady Player 4 October 2013 в 21:51

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

20
ответ дан yoavf 2 May 2018 в 21:46
поделиться
  • 1
    Визуальная часть ясно помогла понять различие между этими двумя объявлениями. – user1493813 28 October 2013 в 14:20

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

28
ответ дан 3 revs, 2 users 75% 2 May 2018 в 21:46
поделиться
  • 1
    да я don' t действительно знают, является ли это исключение в этой точке, я haven' t сделанная разработка iOS в долгое время... @PeterHosey в appcode Вы получаете доступ к сырым данным gdb/lldb подсказка? раз так можно установить символьную точку останова..., Вы могли в XCode даже устанавливать один с условием f! =f (я воображаю, но haven' t протестированный) – Grady Player 4 October 2013 в 21:29

После некоторого расследования и общего получения по запросу волос решение, кажется, 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:

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

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

Теперь, html2pdf является пожирателем ресурсов. Мой 70k файл занимает приблизительно 5 минут и по крайней мере 500-600M из RAM для создания файла 35 страниц PDF. Не достаточно быстрый (безусловно) для загрузки в реальном времени, к сожалению, и использования памяти помещает отношение использования памяти в порядок 1000 к 1 (600M RAM для 70k файла), который совершенно смешон.

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

148
ответ дан 3 revs, 3 users 96% 2 May 2018 в 21:46
поделиться

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

20
ответ дан 2 revs, 2 users 67% 3 May 2018 в 07:46
поделиться

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

55
ответ дан 2 revs, 2 users 86% 3 May 2018 в 07:46
поделиться
  • 1
    Это - на самом деле исключение? AFAIK, it' s not— ни Objective C, ни C++. Вы раньше были в состоянии установить точку останова на CGError, хотя я помню то, чтобы это было явно упомянутым в Quartz' s сообщения об ошибках (но у меня никогда не было этой определенной ошибки прежде). (Пользователи AppCode: Это doesn' t поддерживают символьные точки останова с 2.1— you' ll должны использовать XCode для этого.) – Peter Hosey 4 October 2013 в 20:03

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

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

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

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

663
ответ дан 22 November 2019 в 20:13
поделиться

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

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

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

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

125
ответ дан 22 November 2019 в 20:13
поделиться

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

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

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

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

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

9
ответ дан 22 November 2019 в 20:13
поделиться

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

16
ответ дан 22 November 2019 в 20:13
поделиться