HTML到MS Word文档的总页数

时间:2018-11-23 13:21:24

标签: php html

我正在尝试使用HTML创建Word文档。

借助许多示例,我已经能够实现这一目标。但是,我似乎无法将文本中的总页数放在文档第一页的顶部。

我正在尝试添加“此文档在文本的第一行中包含页面的“ PAGENUM”个页面,但是在创建文档时,“ PAGENUM”为空白(除了我也希望在页脚中保持)。

是我要实现的目标,还是我完全弄错了?

我的代码(感谢另一个用户Vahid)如下,

<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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>

<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Print</w:View>
<w:Zoom>100</w:Zoom>
</w:WordDocument>
</xml><![endif]-->
<style>
<!-- /* Style Definitions */
p.MsoHeader, li.MsoHeader, div.MsoHeader{
margin:0in;
margin-top:.0001pt;
mso-pagination:widow-orphan;
tab-stops:center 3.0in right 6.0in;
}
p.MsoFooter, li.MsoFooter, div.MsoFooter{
margin:0in 0in 1in 0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
tab-stops:center 3.0in right 6.0in;
}
.footer {
font-size: 9pt;
}
@page Section1{
size:8.5in 11.0in;
margin:0.5in 0.5in 0.5in 0.5in;
mso-header-margin:0.5in;
mso-header:h1;
mso-footer:f1;
mso-footer-margin:0.5in;
mso-paper-source:0;
}
div.Section1{
page:Section1;
}
table#hrdftrtbl{
margin:0in 0in 0in 9in;
} 
-->
</style>
<style type="text/css" media="screen,print">
body {
font-family: "Calibri", "Verdana","HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
font-size:12pt;
}
pageBreak {
clear:all;
page-break-before:always;
mso-special-character:line-break;
}
</style>
</head>
<body style='tab-interval:.5in'>
<div class="Section1">

 This document contains <span style='mso-field-code: NUMPAGES '></span> pages.

 MORE CONTENT

<table id='hrdftrtbl' border='1' cellspacing='0' cellpadding='0'>
    <tr>
        <td>
            <div style='mso-element:header' id="h1" >
                <p class="MsoHeader">
                    <table border="0" width="100%">
                        <tr>
                            <td>

                                YOUR_HEADER IMAGE/TEXT

                            </td>
                        </tr>
                    </table>
                </p>
           </div>
      </td>
      <td>
        <div style='mso-element:footer' id="f1">
            <p class="MsoFooter">
                <table width="100%" border="0" cellspacing="0"      cellpadding="0">
                    <tr>
                        <td align="center" class="footer">
                        YOUR_FOOTER_TEXT
                            <g:message code="offer.letter.page.label"/>           <span style='mso-field-code: PAGE '></span> of <span style='mso-field-code: NUMPAGES '></span>
                        </td>
                    </tr>
                </table>
            </p>
        </div>
    </td>
   </tr>
   </table>
 </div>
</body>
</html>

谢谢。

1 个答案:

答案 0 :(得分:0)

如果您尝试在Word中执行此操作并清除它生成的代码,则会得到以下内容:

            ...
<div class="Section1">

 This document contains
 <!--[if supportFields]>
  <span>
   <span style='mso-element:field-begin'></span>
   <span style='mso-spacerun:yes'> </span>
   NUMPAGES
   <span style='mso-spacerun:yes'>  </span>
   \* MERGEFORMAT <span style='mso-element:field-separator'></span>
  </span>
 <![endif]-->
 <span style='mso-no-proof:yes'>X</span>
 <!--[if supportFields]>
  <span>
   <span style='mso-element:field-end'></span>
  </span>
 <![endif]--> pages.

 MORE CONTENT
        ...

请注意,当您打开Word文档时,必须“更新字段”才能看到正确的页数。否则,它将显示“ mso-no-proof”值(此处为“ X”)。