Я заинтересован в создании «сервера печати» для своего веб-приложения, и я подумал о различных способах решения этой проблемы и пришел к этому решению. Я нашел плагин для firefox, который будет печатать из командной строки (включая файлы PDF). Итак, я хочу установить FF на свой сервер Ubuntu10, а затем заставить мои сценарии PHP вызывать FF через командную строку для печати в PDF по указанному URL-адресу. Когда операция будет завершена, сценарий PHP заберет сгенерированный файл и отправит его пользователю.
Есть ли проблемы с установкой FF без графического интерфейса при установке сервера Ubuntu? Есть ли у этого решения очевидные узкие места? Я работал в течение последнего часа или около того, чтобы заставить Firefox запускаться из командной строки, и он продолжает говорить мне «Ошибка: не указан дисплей», что имеет смысл, поскольку я запускаю автономный сервер. Есть ли способ заставить FF запускаться из командной строки на сервере без установленного графического интерфейса?
При необходимости, я думаю, нам придется настроить версию Desktop (GUI) с настройкой Apache + PHP, чтобы делать то, что нам нужно, но было бы неплохо, чтобы все это работало на серверных ящиках.
Спасибо всем
Я бы предложил wkthtmltopdf чтобы отобразить html-страницу как pdf (включая таблицы стилей) и распечатать ее через CUPS / доставить пользователю / сделать с ней все, что вы хотите.
Одно слово: PrinceXML. Единственное, что я знаю, что может надежно конвертировать CSS / HTML в PDF. (Вы не заявляли, что хотите бесплатное или бесплатное программное обеспечение :-)).
Альтернативой (с двойной лицензией: бесплатное / бесплатное ПО или по умеренной цене / коммерческое) является HTMLDOC. Но он не поддерживает полный набор CSS ...
Это определенно не лучший способ создавать PDF-файлы из PHP. Для этого есть библиотеки (т.е. FPDF).
Изменить: Хорошо, с вашими комментариями это исключает библиотеки PHP. Может быть этот помогает? Кажется, что вы делаете то, что хотите. Если для этого по-прежнему требуется набор дисплеев X11, исследуйте xvfb, который создаст виртуальный дисплей.