我正在为一个客户端编写一个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;}
答案 0 :(得分:2)
我有同样的问题,我正在标记我的换行符:
<br/>
当我把它改为
时<br>
然后我的线路开始工作。
答案 1 :(得分:1)
您的问题可能是由于当您将内容类型切换为Word文档时,浏览器不会将其呈现为HTML。我的猜测是,如果你想换行,你需要在Word文档中添加换行符。 如何插入此换行符?我不确定,但你总是可以尝试:
echo "Aug\r\n01";
其中\ r \ n是换行符。
答案 2 :(得分:0)
怎么样,如果你想维持一个换行符,只是echo "<p>Aug</p><p>01</p>";
它不漂亮,但它会影响你正在寻找的换行符。