Я разработчик PHP и в одном из моих проектов мне нужно преобразовать некоторые документы HTML (от 30 до 50 страниц) в документы PDF.
В моем поиске появились следующие возможные решения. Среди них некоторые библиотеки PHP и некоторые приложения командной строки. Каждый из них имеет свои преимущества и недостатки.
Библиотеки PHP:
- fpdf (требуется больше усилий для преобразования)
- tcpdf (требуется больше усилий для преобразования)
- html2fpdf http://html2fpdf.sourceforge.net
- html2pdf http://html2pdf.fr/
- dompdf http://code.google.com/p/dompdf/ (по сравнению с другими, хорошо работает)
Для каждой библиотеки у меня есть такие проблемы, как:
- Занимает много времени (более пяти минут, чтобы конвертировать 30 HTML-страниц).
-
Требуется слишком много ресурсов (память и время)
(Я установил следующие параметры в php.ini:
max_execution_time = 600
memory_limit = 250M
но все еще не работает.)
-
Требуется, чтобы страницы HTML были хорошо отформатированы (например, отсутствовали теги для тегов)
Все это работает, когда я пытаюсь преобразовать простые HTML-документы (пять или менее страниц с небольшим CSS)
Приложения с командной строкой
Все приложения в командной строке работают отлично и очень быстро по сравнению с вышеупомянутыми библиотеками, но только когда я запускаю их непосредственно на консоли. Когда я пытаюсь использовать их в PHP с exec()
или system()
, они дают мне ошибки.
Ниже перечислены приложения командной строки и их ошибки при запуске их в PHP:
-
html2pdf (http://www.tufat.com/s_html2ps_html2pdf.htm)
html2pdf: 11380): Gtk-WARNING **: невозможно открыть отображение:: 0.0
Не указано протокол -
wkhtmltopdf
Загрузка страницы: 10%
Страница загрузки: 33%
Страница загрузки: 100%
Ожидание перенаправления
Вывод страниц
QPainter:: begin(): Возвращаемое значение false QPainter:: begin(): Возвращаемое значение false QPainter:: save: Художник неактивен
QPainter:: scale: Художник неактивен
QPainter:: setRenderHint: Художник должен быть активным, чтобы установить подсказки рендеринга
QPainter:: setBrush: художник неактивен
QPainter:: pen: Неактивен художник
QPainter:: setPen: Художник неактивен -
htmltopdf (http://www.ultrashareware.com/html-to-pdf.htm)
Итак, теперь я ищу помощь. Кто-нибудь может ответить:
Какая библиотека PHP будет хорошо работать в моем случае?
Почему эти ошибки возникают в приложениях командной строки?