Возможно ли выводить форматы, отличные от .docx и .odt, с помощью плагина TinyButStrong и OpenTBS
Вопрос
У меня есть модуль, который объединяет документ из записей базы данных и .docx
или .odt
модель документа.
Я должен вывести .docx
, .odt
или .pdf
.Для вывода в Microsoft и открытые форматы проблем нет, все работает корректно.
Но что я хочу знать, так это могу ли я вывести данные в формат (например, XML или HTML), который я могу использовать для последующего создания PDF-документа?
Если я не могу, существуют ли какие-либо библиотеки, которые предоставляют возможность объединения документов, например:
DOCX (or ODT) + database record => PDF
И я не хочу использовать phplivedocx.
Решение
Я не знаю ни одной библиотеки PHP, которая поддерживает DOCX => PDF.На самом деле, преобразование DOCX во что-то другое на PHP сегодня является открытой проблемой.Это не зависит от того, как вы создали DOCX.
Но, как вы сказали, это библиотеки PHP для HTML => PDF.
Html2Pdf это хорошо известная библиотека PHP, которая делает HTML => PDF.Существует также DomPdf.
Так что, если вы сможете найти библиотеку PHP для DOCX => HTML, тогда это сработает.
Конечно, у этого есть некоторые ограничения, потому что даже если и PDF, и DOCX являются открытыми форматами, у них есть очень специфические функции, они требуют огромного процесса рендеринга, и редакторы держат для них несколько полезных советов.
Преобразование DOCX в HTML теоретически возможно.Существует программное обеспечение для Windows, которое делает это с помощью ЭпингСофт.Если вам нужно сделать это на PHP, в некоторых веб-статьях рассказывается, как это сделать, но поскольку я не смог найти ни одного PHP-кода, делающего это, я думаю, это скорее теоретический, чем практический подход.
http://www.quepublishing.com/articles/article.aspx?p=691502
Насколько сложным будет этот процесс , зависит от того, сколько встроенного форматирования Word вам нужно сохранить во время преобразования.
Если вы хотите попробовать этот способ, полезно знать, что OpenTBS позволяет вам читать XML до и после слияния.Он основан на классе PHP с именем TbsZip, который может считывать любой XML-файл в формате DOCX, поскольку на самом деле это zip-архив.
Другие советы
Я успешно разместил переносимую версию libreoffice на веб-сервере моего хостинга, который я вызываю с помощью PHP, чтобы выполнить преобразование командной строки из .docx и т.д.в формат pdf.на лету.У меня нет прав администратора на веб-сервере моего хостинга.Вот запись в моем блоге о том, что я сделал:
Ура!Конвертируйте напрямую из .docx или .odt в .pdf с помощью PHP с помощью LibreOffice (преемника OpenOffice)!
Также возможно использовать PDF-файлы непосредственно в TBS после распаковки:
qpdf --qdf --object-streams=disable in.pdf out.pdf