Я использовал Spreadsheet_Excel_Writer
в PHP, и это достаточно хорошо. Не WYSIWYG, но он генерирует XSL-файлы, и я доволен этим. После этого вы можете использовать макрос OpenOffice для преобразования документа в PDF. Он работает из командной строки, поэтому он работает и из PHP-скриптов.
Или вот еще лучший способ.
Используйте OpenOffice для конвертации шаблона Smarty. Smarty - классный движок шаблонов для PHP, я рекомендую его для этой цели. Затем сгенерируйте чистый HTML с помощью PHP с помощью Smarty. Наконец, просто преобразуйте сгенерированный HTML в PDF, используя вышеупомянутый метод.
Отчетность революционизированная (тм).
РЕДАКТИРОВАТЬ 6 июня 2009
Модедировано вниз? Ах, неважно.
В любом случае, этот метод работает на автономном сервере без запуска X11. Я взял сценарий из упомянутой ссылки (за исключением того, что я поместил его в ранее существовавшую коллекцию "Standard" вместо "DannysLibrary"), а затем я выполнил эту команду с компьютера Windows, используя PuTTY, и X был завершение работы на удаленном компьютере, и переменная DISPLAY не была установлена, и ... ну, в любом случае, OOo не может найти X11 для подключения.
$ openoffice.org -invisible -headless "macro:///Standard.Conversion.ConvertWordToPDF(`pwd`/logaritamska.doc)"
Это работает, и я уверен, что это будет отлично работать для всех, кому потребуется преобразование из другого формата в PDF, включая создание печатных отчетов из HTML. Редактируя макрос, вы, возможно, даже можете заставить OOo читать напрямую из stdin или из вашего временного URL-адреса службы и выводить в предопределенный файл. Сценарий по ссылке довольно прост, если у вас есть элементарный код для расширения.
Резюме:
- создавать отчеты в формате XLS или HTML
- конвертировать их
- , хотя это OOo, он работает на безголовых машинах
РЕДАКТИРОВАТЬ 9 июня 2009
Я пытался реализовать онлайн-конвертер таким образом. Вы должны заставить PHP работать под тем же пользователем, под которым вы создали макросы. Этот пользователь, видимо, не может быть www-data. Я пытался использовать suphp, но по какой-то причине он не изменил пользователя должным образом (posix_getuid()
продолжал возвращать 33, что является www-данными). Я отредактирую это, как только исправлю.
РЕДАКТИРОВАТЬ 26 июня 2009
Думаю, мне понадобилось время, чтобы доложить. Да, это работает с suphp. Однако я не в состоянии показать его вживую, поскольку на моем единственном сервере запущено относительно критическое веб-приложение, в котором не было профессионального аудита безопасности. Это означает, что одна из вещей, от которых мы зависим для защиты бэкэнда, заключается в том, что пользователь, под которым работает веб-интерфейс, является очень и очень непривилегированным пользователем (например, www-data). Не спрашивай: -)
Надеюсь, это кому-нибудь поможет: да, преобразование в PDF с помощью OO.o вполне реально. В OO есть даже поддержка удаленного вызова, но я не изучал это только для написания этого.