2009-09-04 32 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> 

然後我換行符開始工作。