Отображение предварительного просмотра документа Word с использованием officeapps API и вывода PHP

#php #phpword

#php #phpword

Вопрос:

Я пытаюсь отобразить предварительный просмотр встроенного документа Word с помощью Office live view. Я не хочу использовать сохраненный файл .docx. Я использую библиотеку PHPWORD для создания документа, используя ее класс templateprocessing.

Все работает, когда я ссылаюсь на путь к сохраненному документу, но не как на вывод php.

Что у меня есть до сих пор

HTML

 <iframe src='https://view.officeapps.live.com/op/embed.aspx?src=https://homeurl.com/panel/export?code=MYaM14lMfqm8NFYxpO67amp;id=43' ' width='1366px' height='623px' frameborder='0'></iframe>
 

И на стороне сервера у меня есть:

PHP

 header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=" . $params['document_name']. ".docx");
header("Content-Transfer-Encoding: binary");
$templateProcessor->saveAs("php://output");
 

Предварительный просмотр iframe сообщает, что он не может прочитать файл.

Я думаю, что это как-то связано с информацией заголовка, но я еще не нашел решения для этого.

Ответ №1:

Я обнаружил, что это не работает, если URL-адрес файла не содержит имя файла и расширение, как в вашем случае. Каким-то образом это работает, если вы измените свой URL:

 <iframe src='https://view.officeapps.live.com/op/embed.aspx?src=https://homeurl.com/panel/export/file.docx?code=MYaM14lMfqm8NFYxpO67amp;id=43' ' width='1366px' height='623px' frameborder='0'></iframe>
 

Не могу найти никакой документации, чтобы узнать, есть ли лучший способ заставить его работать.