PHP:从html输出docx文件

时间:2016-08-04 09:24:37

标签: php mime-types docx


以前我想输出一个doc文件就可以了。
但是当我更改为docx时,它告诉我无法打开docx,因为发现其内容有问题/文件已损坏。

如果我取出“回声”,则不会发生错误,但内容为空 这是我的代码:

 $fileName = $m_year . "-" . $m_month . "-" . $m_con_id . " - Monthly Report.docx";
 header("Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document");
 header("content-disposition: attachment;filename=\"". $fileName ."\"");
 header('Cache-Control: public');
 $content = ets_docMonthlyReportTemplate();
 echo $content;

然后我改为vsword,但给我非法的名字。位置:部分:/word/document.xml

require_once '/vsword/VsWord.php'; 
VsWord::autoLoad();
$doc = new VsWord(); 
$parser = new HtmlParser($doc);
$content = ets_docMonthlyReportTemplate();
$html= $content;
$parser->parse($html); 
echo '<pre>'.($doc->getDocument()->getBody()->look()).'</pre>'; 
$doc->saveAs($fileName);

我可以按标题MIME类型输出吗?还是必须应用库?
感谢。

2 个答案:

答案 0 :(得分:0)

您需要使用库来完成此任务。

其中一个比较受欢迎的是PHPWord

还有VSword

还有付费解决方案PHPDocx

答案 1 :(得分:0)

readfile($ fileName); 应该可以解决

`require_once '/vsword/VsWord.php'; 
VsWord::autoLoad();
$doc = new VsWord(); 
$parser = new HtmlParser($doc);
$content = ets_docMonthlyReportTemplate();
$html= $content;
$parser->parse($html); 
echo '<pre>'.($doc->getDocument()->getBody()->look()).'</pre>'; 
$doc->saveAs($fileName);
header("Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document");
header("content-disposition: attachment;filename=\"". $fileName ."\"");
readfile($fileName);`