Я собираюсь создать документ с помощью PhpWord, у меня есть черновик документа, где я установил client_name
динамически.
$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor($draftUrl);
$templateProcessor->setValue("client_name", $clientName);
$filename = '30.docx';
$templateProcessor->saveAs($filename);
тогда я читаю этот файл и пользователь может скачать его
header('Content-Type: application/octet-stream');
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-Disposition: attachment; filename='$filename'");
readfile($filename);
когда я пытаюсь открыть его через Майкрософт офис У меня есть это сообщение:
и после принятия этого, наконец, я вижу, что мой документ готов. Что мне нужно для создания читаемого документа?
Я только добавил ob_clean () в мой код, прежде чем читать, и все работает нормально.
Эта функция отбрасывает содержимое буфера вывода.
Эта функция не уничтожает выходной буфер, как ob_end_clean ()
делает.
поэтому я гарантировал, что нежелательный вывод не попадет в сгенерированный документ.
$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor($draftUrl);
$templateProcessor->setValue("client_name", $clientName);
$filename = '30.docx';
$templateProcessor->saveAs($filename);
header('Content-Type: application/octet-stream');
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-Disposition: attachment; filename='$filename'");
ob_clean();
readfile($filename);
Других решений пока нет …