2009-09-04 31 views
1

我正在为需要预先存在的HTML页面的客户端编写一个PHP应用程序,该页面已经创建为“导出”为Word文件。简单地说,这是它是如何做:使用HTML文件作为Word文件时的新行格式?

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

这当然会,如果一个“字”标志位于页面查询字符串调用,如:

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

不管怎么说,我的问题是,尽管这个HTML页面实际上有多复杂,但它通过改变内容类型实际上很好地转换为格式良好的Word文件。我遇到的唯一问题是新的换行符(HTML <br>标签)格式不正确。例如: - 在我的HTML,如果我有东西,看起来像

Aug 
01

与线之间的BR,它最终总是显示

Aug 01
在生成的Word文件

我已经做了一些谷歌搜索和大量的测试与其他各种东西,但似乎没有什么格式正确的简单的新行。

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

任何帮助是极大的赞赏。

编辑:

我已经试过包裹所述线路在P标签,鼻翼:

<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;} 

回答

1

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

echo "Aug\r\n01"; 

其中\ r \ n是换行符。

+0

好吧,我只是试过这个,但它仍然是在Word文件中的输出。我会编辑我的原始问题,以表明我以前尝试过的内容。 尽管感谢您的协助。 – theotherlight

+0

对不起,我忍不住。也许你应该尝试研究一个Word文件的工作方式以及你的浏览器如何渲染Word文档。 – Eddie

+0

对于它的价值,Word文件不会在浏览器中呈现。切换内容类型会强制HTML文件在Microsoft Word中呈现(弹出“打开/另存为”对话框),这导致我相信它不应该与浏览器呈现有关? – theotherlight

0

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

2

我有同样的问题,我是喜欢贴标签,所以我换行:

<br/> 

当我改变它只是

<br> 

然后我换行符开始工作。