使用PHPWord下载生成的文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用PHPWord下载生成的文件相关的知识,希望对你有一定的参考价值。

我正在尝试使用PHPWord插件将一些html转换为.docx

但是当我下载文件时,我只会弄乱像:PK########�^uK�j�#c###!#######[Content_Types].xml���N�0#E�|E�-Jܲ@#5��#*Q>5'��_�8}�=��D#AC�v#)��s�G�G��5� "j�J6,#,#'��nQ���s~�2L�)a���m#�d|5�m#F�#K�L)�s�r V�#8�T>Z��5.x#�C,��这样的字符

这是我的代码:

<?php
error_reporting (E_ALL | E_STRICT);
@ini_set ('display_errors', 'on');
require_once '../../../../vendor/autoload.php';

$my_content = $_POST['html_content'];

$phpWord = new PhpOfficePhpWordPhpWord();
$section = $phpWord->addSection();

PhpOfficePhpWordSharedHtml::addHtml($section, $my_content);

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachement;filename="teste.docx"');
$objWriter = PhpOfficePhpWordIOFactory::createWriter($phpWord, 'Word2007');
$objWriter->save('php://output');
?>

我已经搜索过网络,但不知道如何继续。

答案

只需使用内置功能,如下所示

$phpWord->save('teste.docx', 'Word2007', true);

最后一个参数将强制下载生成的文件。

另一答案

attachement;filename="teste.docx"之间添加一个空格,这样标题就可以了

header('Content-Disposition: attachment; filename="teste.docx"');

并添加以下标头:

header('Content-Description: File Transfer');

更新

您可以尝试将文件保存到磁盘并从中发送,我也会遇到这样的问题并且它为我解决了:

$objWriter = PhpOfficePhpWordIOFactory::createWriter($phpWord, 'Word2007');
$objWriter->save($filePath);

header("Expires: Mon, 1 Apr 1974 05:00:00 GMT");
header("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header('Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document;');
header("Content-Disposition: attachment; filename=file.docx");
readfile($filePath);
unlink($filePath);

以上是关于使用PHPWord下载生成的文件的主要内容,如果未能解决你的问题,请参考以下文章

PHP使用PHPWord生成word文档

PHP使用PHPWord生成word文档

php [Php - Phpoffice Override]覆盖PHPOffice\PHPWord类以从HTML代码生成docx文件。当orde时,这个生成正确的数字

PHPWord使用PHPWord自动生成TOC根据内容的目录完整示例 | table of contents (TOC)

PHPWord使用PHPWord自动生成TOC根据内容的目录完整示例 | table of contents (TOC)

PHPWord使用PHPWord自动生成TOC根据内容的目录完整示例 | table of contents (TOC)