phpoffice phpword сохранение файла

447
16 июля 2021, 03:10

Каким образом корректно отдавать файлы сформированные php word?

Использую такой вариант:

header("Content-Description: File Transfer");
header('Content-Disposition: attachment; filename="test.doc"');
header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
$objWriter->save("php://output");

Файл нормально открывает только Word. Open Office, Libre Office ругаются на файл. При этом если сохранять файл как в доках echo write($phpWord, basename(__FILE__, '.php'), $writers); то готовый файл открывается любым офисным пакетом.

Чяднт?

Answer 1

Всё оказалось очень просто. Для формата Word 2007 нужно ставить расширение .docx иначе libre, open не смогут с ним работать.

header('Content-Disposition: attachment; filename="test.docx"');
READ ALSO
Параметры и тип byte

Параметры и тип byte

Почему я получаю ошибку компиляции? Среда разработки подсказывает, что нужно сделать тип возвращаемого значения intbyte, short в типе возвращаемого...

117
Запись звука в android

Запись звука в android

Я новичок в этом деле, но может кто подскажет есть ли возможность записи звука в Android, чтобы не использовать MediaRecorderAudioSource

100
Как выровнять элементы по горизонтали? Менеджеры компоновки Java

Как выровнять элементы по горизонтали? Менеджеры компоновки Java

Нужно расположить надписи и поля вот так:

144