我正在尝试生成一个doc文件,使用headers方法在PHP中通过HTML代码包装它。该方法工作正常,我得到一个正确的docx文件。但是docx文件中没有分页符。无论文本有多长,它都在一页中。 这是示例代码..
<?php
header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment;Filename=demo.doc");
echo "<html>";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset= Windows-1251\">";
echo "<body>";
echo "<b>Random Text</b>";
echo "</body>";
echo "</html>";
?>
在发布这个问题之前我也试过google并且通过添加下面的代码提出了许多人解决了类似的问题。
echo "<br style='mso-special-character:line-break; pageBreakBefore:auto'>";
但是这个解决方案在我的情况下不起作用。
答案 0 :(得分:1)
以下是我使用LibreOffice Writer获得的内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing">
<w:body>
<w:p>
<w:pPr>
<w:pStyle w:val="style0"/>
</w:pPr>
<w:r>
<w:rPr></w:rPr>
<w:t>Before page break</w:t>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val="style0"/>
<w:pageBreakBefore/>
</w:pPr>
<w:r>
<w:rPr></w:rPr>
<w:t>After</w:t>
</w:r>
</w:p>
<w:sectPr>
<w:type w:val="nextPage"/>
<w:pgSz w:h="15840" w:w="12240"/>
<w:pgMar w:bottom="1134" w:footer="0" w:gutter="0" w:header="0" w:left="1134" w:right="1134" w:top="1134"/>
<w:pgNumType w:fmt="decimal"/>
<w:formProt w:val="false"/>
<w:textDirection w:val="lrTb"/>
</w:sectPr>
</w:body>
</w:document>
答案 1 :(得分:1)
只需在需要分页符的地方为HTML元素添加样式。
<h2 style="page-break-before: always;">Next Page</h2>
此标题将显示在新页面中。
答案 2 :(得分:0)
我知道这是一个非常古老的问题,但这就是我正在使用的,它的工作非常好。
Docx XML使用它来打破页面
<w:br w:type="page"/>
只要您想要分页,就可以使用它。
有关分页here的更多信息。