Ну, мои 2 цента, когда речь заходит о слове темы 2007 docx
, слове 97-2004 doc
, pdf
и всех других типах MS Office, желающих быть "преобразованными из y
в z
но на самом деле они не хотят быть ".По моему опыту, на конверсию с LibreOffice или OpenOffice нельзя полагаться.Хотя .doc
документы, как правило, лучше поддерживаются, чем .docx
в Word 2007.В общем, очень трудно преобразовать .docx
в .doc
, не нарушая ничего.
.docx
также имеет тенденцию быть чрезвычайно полезным для шаблонов, где .doc
не является двоичным.
Преобразование из .doc
в PDF в большинстве случаев было достаточно надежным.Если вы все еще можете влиять на дизайн или содержание документа word, то это может быть удовлетворительным, но в моей ситуации документы были предоставлены иностранными компаниями, где даже после создания шаблонов .docx
в некоторых сценариях сгенерированный .docx
должен былбыть слегка измененным с добавлением текста до того, как он был сгенерирован в PDF.
ОСНОВАНИЯ WINDOWS!
Весь этот сбой заставил меня прийти к выводу, что единственный действительно надежный метод преобразования, который я нашелЯ использовал класс COM в PHP и позволил MS Word или Excel приложению сделать всю работу за вас.Я просто приведу пример преобразования .docx
в .doc
и / или PDF.Если у вас не установлен MS Office, вы можете загрузить пробную версию на 60 дней, которая даст вам достаточно места для целей тестирования.
расширение COM.net по умолчанию закомментированов php.ini
просто найдите строку php_com_dotnet.dll
и раскомментируйте ее следующим образом:
extension=php_com_dotnet.dll
Перезапустите веб-сервер (IIS не является предварительным, Apache будет работать так же хорошо).
Приведенный ниже код демонстрирует, насколько это просто.
$word = new COM("Word.Application") or die ("Could not initialise Object.");
// set it to 1 to see the MS Word window (the actual opening of the document)
$word->Visible = 0;
// recommend to set to 0, disables alerts like "Do you want MS Word to be the default .. etc"
$word->DisplayAlerts = 0;
// open the word 2007-2013 document
$word->Documents->Open('yourdocument.docx');
// save it as word 2003
$word->ActiveDocument->SaveAs('newdocument.doc');
// convert word 2007-2013 to PDF
$word->ActiveDocument->ExportAsFixedFormat('yourdocument.pdf', 17, false, 0, 0, 0, 0, 7, true, true, 2, true, true, false);
// quit the Word process
$word->Quit(false);
// clean up
unset($word);
Это всего лишь небольшая демонстрация.Я могу просто сказать, что если речь идет о конверсии, это был единственный реальный надежный вариант, который я мог бы использовать и даже рекомендовать.