将HTML文件用作Word文件时的新行格式?

时间:2009-09-04 13:41:41

标签: php ms-word

我正在为一个客户端编写一个PHP应用程序,该客户端需要一个我已经创建的预先存在的HTML页面作为Word文件“导出”。简单来说,这就是它的完成方式:

if (isset($_GET["word"])) {
  header("Content-type: application/vnd.ms-word");
  header("Content-Disposition: attachment;Filename=some_file.doc");
}

当然,如果页面查询字符串中有“word”标志,则会调用它,例如:

whateverpage.php?somequery=string&someother=test&word

无论如何,我的问题是,尽管这个HTML页面实际上有多复杂,但它实际上只是通过更改内容类型就可以很好地传输到格式良好的Word文件。我遇到的唯一问题是新的换行符(HTML< br>标记)没有正确格式化。例如:在我的HTML中,如果我有一些看起来像

的东西
Aug
01

在行之间有BR,它总是最终显示

Aug 01
生成的Word文件中的

我已经完成了一些谷歌搜索以及许多其他测试的测试,但似乎没有任何东西可以通过简单的新行正确格式化。

有谁知道如何正确格式化从HTML文件创建的Word文件中的新行字符?

非常感谢任何帮助。

编辑:

我已经尝试将所述行包装在P标签中,ala:

<p>Aug<br>01</p>

没有运气。我还尝试制作一个基本文档和Word,将其保存为HTML文件并查看生成的(即草率)Word HTML源代码。那里有一些CSS,我认为可能会给我一个线索,但我尝试了一切,似乎没有什么工作正常。 Word似乎在包装的段落中添加了一个'MsoNormal'类,我尝试添加它,但它只是删除了我所拥有的任何字体格式,并没有帮助。这是CSS Word创建自己:

p.MsoNormal, li.MsoNormal, div.MsoNormal
    {mso-style-unhide:no;
    mso-style-qformat:yes;
    mso-style-parent:"";
    margin-top:0cm;
    margin-right:0cm;
    margin-bottom:10.0pt;
    margin-left:0cm;
    line-height:115%;
    mso-pagination:widow-orphan;
    font-size:11.0pt;
    font-family:"Calibri","sans-serif";
    mso-ascii-font-family:Calibri;
    mso-ascii-theme-font:minor-latin;
    mso-fareast-font-family:Calibri;
    mso-fareast-theme-font:minor-latin;
    mso-hansi-font-family:Calibri;
    mso-hansi-theme-font:minor-latin;
    mso-bidi-font-family:"Times New Roman";
    mso-bidi-theme-font:minor-bidi;
    mso-fareast-language:EN-US;}

3 个答案:

答案 0 :(得分:2)

我有同样的问题,我正在标记我的换行符:

<br/>

当我把它改为

<br>

然后我的线路开始工作。

答案 1 :(得分:1)

您的问题可能是由于当您将内容类型切换为Word文档时,浏览器不会将其呈现为HTML。我的猜测是,如果你想换行,你需要在Word文档中添加换行符。 如何插入此换行符?我不确定,但你总是可以尝试:

echo "Aug\r\n01";

其中\ r \ n是换行符。

答案 2 :(得分:0)

怎么样,如果你想维持一个换行符,只是echo "<p>Aug</p><p>01</p>";它不漂亮,但它会影响你正在寻找的换行符。