从PHP生成DOC时需要有关分页符的帮助

时间:2013-02-21 05:24:40

标签: php html ms-word

我正在尝试生成一个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 "&lt;/body>";
echo "&lt;/html>";
?>

在发布这个问题之前我也试过google并且通过添加下面的代码提出了许多人解决了类似的问题。

echo "&lt;br style='mso-special-character:line-break; pageBreakBefore:auto'>";

但是这个解决方案在我的情况下不起作用。

3 个答案:

答案 0 :(得分:1)

  1. 打开字词
  2. 使用分页符创建文档
  3. 在您喜欢的zip文件程序中打开docx
  4. 查找内容
  5. 以下是我使用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的更多信息。