2010-01-29 69 views
0

這是我的代碼,大大縮短了。如何將圖像添加到php創建的MS Word文檔中?

<?php 
    session_start(); 
    header("Content-Type: application/msword"); 
    header('Content-Disposition: attachment; filename="Contrat d\'étude.doc"'); 
?> 

    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    </head> 

    <body> 
     <p align="right">Version: A</p> 
     <img src="img/logoPoly.png" alt="École Polytechnique de Montréal" /> 

     <h1>CONTRAT D'ÉTUDES HORS QUÉBEC</h1> 
     ............ 

我在這裏嘗試使用常規的img標籤添加圖像,但一旦用戶的計算機上,路徑不工作,很明顯..所以我怎麼能去呢?

而順便說一句,元標記是設置字符集的好方法嗎?或者有更好的方法,也許使用PHP頭函數?

感謝您的幫助!

回答

2

您的代碼中是否有東西被截斷,將所有HTML轉換爲MS Word文件?

因爲......呃......你知道用.doc擴展名保存一個HTML文件實際上並不是一個Word文件,對嗎?

如果您有HTML,只需將其作爲HTML提供,並且用戶可以使用瀏覽器自己的「使用圖像保存網頁」功能來保存圖像。或者你可以寫一個MHTML文件,如果你喜歡的話,包括它裏面的圖像。

但是HTML-file-hiding-under-DOC-file-extension並不是一個真正有效的格式。這是你不應該依賴的東西,如果Word設法加載/導入的東西;要求它拖入圖像,並要求在月球上放一根棍子。

是的,meta是設置字符集的唯一方法,當您提供您希望人們保存的HTML文件時。 Content-Type頭文件通常也是一個很好的放置位置,但只要文件保存在不支持保存類型元數據的文件系統(即當前所有流行的文件系統)中,該信息就會丟失。

順便提一句,像é這樣的非ASCII字符在filename頭參數中是完全不可靠的。根據瀏覽器的不同,它們會被視爲不同的編碼(對於IE,也是區域設置),並且沒有標準的轉義方式。將非ASCII字符放入下載文件的文件名的唯一可靠方法是將它們作爲尾隨URL部分,編碼爲UTF-8。例如:

http://www.example.com/download.php/Contrat%20d%27%C3%A9tude.doc 
+0

嘿,好點。實際上,我的代碼中沒有任何內容使其成爲單詞文檔。但是,當我把這個頁面保存爲.doc並且用word打開(實際上是開放式辦公室)時,它顯示的是預期的(除了該圖像和任何css)。我這樣做的原因是因爲這個頁面是一個php填寫的表單,需要通過電子郵件作爲word文檔發送。那麼,什麼是MTHML呢? – Shawn 2010-01-29 23:42:20

+0

http://en.wikipedia.org/wiki/MHTML - 它就像一個包含HTML和外部資源的存檔。我不知道是誰制定了「必須以郵件形式發送爲Word文檔」的要求,但我懷疑這是他們的意思!真正的.DOC很難創建; .DOCX,.RTF和.PDF可能更合理。 – bobince 2010-01-29 23:44:15

0

在MS WORD上創建您的模板(添加一些圖像),並將其另存爲doc文件。在記事本++或smth代碼編輯器中打開此文件,將所有代碼複製到php文件並添加您的php變量。 要添加圖像,您需要將圖像轉換爲base64格式。如果您注意到文字文件代碼,則添加的圖像是一些基於字符的格式。

相關問題