5

我在 php 文档中添加了页眉/页脚。但我在最后一页有两次页脚内容。我有用户这个代码: -

    <html  xmlns:o='urn:schemas-microsoft-com:office:office'
    xmlns:w='urn:schemas-microsoft-com:office:word'
    xmlns='http://www.w3.org/TR/REC-html40'>
    <head>
        <title>Generate a document Word</title>
        <!--[if gte mso 9]-->
    <xml>
        <w:WordDocument>
            <w:View>Print</w:View>
            <w:Zoom>90</w:Zoom>
            <w:DoNotOptimizeForBrowser/>
        </w:WordDocument>
    </xml>
    <!-- [endif]-->
    <style>
        p.MsoFooter, li.MsoFooter, div.MsoFooter{
            margin: 0cm;
            margin-bottom: 0001pt;
            mso-pagination:widow-orphan;
            font-size: 12.0 pt;
            text-align: right;
        }


        @page Section1{
            size: 29.7cm 21cm;
            margin: 2cm 2cm 2cm 2cm;
            mso-page-orientation: landscape;
            mso-footer:f1;
        }
        div.Section1 { page:Section1;}
    </style>
</head>
<body>
    <div class="Section1">
        <h1>Hello World!</h1>
    <br clear=all style='mso-special-character:line-break;page-break-after:always' />
    <div style='mso-element:footer' id="f1">
        <p class=MsoFooter>
            Page <span style='mso-field-code:" PAGE "'></span>
        </p>
    </div>
</body>
</html>



<?php
header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment;Filename=HelloWorld.doc");
?>

最后一页有错误。它在页面内容之后显示页脚内容两次。

4

2 回答 2

5

您需要在页面顶部插入 HTTP 标头。在页面上打印任何内容之前,应始终声明 HTTP 标头。

<?php
header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment;Filename=HelloWorld.doc");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<title>Hello World</title>
<style>
<!--
 /* Style Definitions */
 p.MsoNormal
    {margin:0cm;
    margin-bottom:.0001pt;
    font-size:12.0pt;
    font-family:"Times New Roman";}
-->
</style>
</head>
<body>
<p class=MsoNormal>Hello World</p>
</body>
</html>

此外,您可以查看 PHPWord 库。它会让你的生活更轻松: https ://github.com/PHPOffice/PHPWord

于 2014-05-22T08:12:16.113 回答
0

是的,错误在于在段落标签中添加“页面”文本 - 这是有效的代码;

     <html  xmlns:o='urn:schemas-microsoft-com:office:office'
     xmlns:w='urn:schemas-microsoft-com:office:word'
     xmlns='http://www.w3.org/TR/REC-html40'>
     <head>
      <title>Generate a document Word</title>
      <!--[if gte mso 9]-->
     <XML>
     <w:WordDocument>
        <w:View>Print</w:View>
        <w:Zoom>90</w:Zoom>
        <w:DoNotOptimizeForBrowser/>
      </w:WordDocument>
     </xml>
     <!-- [endif]-->
     <style>
      p.MsoFooter, li.MsoFooter, div.MsoFooter{
        margin: 0cm;
        margin-bottom: 0001pt;
        mso-pagination:widow-orphan;
        font-size: 12.0 pt;
        text-align: right;
       }

      @page Section1{
        size: 29.7cm 21cm;
        margin: 2cm 2cm 2cm 2cm;
        mso-page-orientation: landscape;
        mso-footer:f1;
       }
      div.Section1 { page:Section1;}
      </style>
      </head>
      <body>
      <div class="Section1">
      <h1 class="Section1">Hello World!</h1>
      <p class="MsoNormal">test is a test </p>
      <br clear=all style='mso-special-character:line-break;page-break-after:always' 
      />
      <div class="MsoFooter" style='mso-element:footer' id="f1">
      <p class=MsoFooter align=right style='margin-bottom:0in;margin-bottom:.0001pt; 
      text-align:right;line-height:normal'> 
      <span style=<span style='mso-field-code:" PAGE "'></span></p> 
      </div>
      </div>
      </body>
      </html>

      <?PHP
      header("Content-type: application/vnd.ms-word");
      header("Content-Disposition: attachment;Filename=HelloWorld.doc");
      ?>
于 2020-07-03T23:41:57.400 回答