2010-06-15 94 views
7

有人要求我在php中創建一個應用程序,該應用程序將生成一個帶有圖像和幾張表格的.doc文件。我的第一種方法是:如何使用php在word文件中包含圖像?

<?php 
function data_uri($file, $mime) 
{ 
    $contents = file_get_contents($file); 
    $base64 = base64_encode($contents); 
    return ('data:' . $mime . ';base64,' . $base64); 
} 
$file = 'new.doc'; 
$fh = fopen($file,'w'); 
$uri = data_uri('pic.png','image/png'); 
fwrite($fh,'<table border="1"><tr><td><b>something</b></td><td>something else</td></tr><tr><td></td><td></td></tr></table> 
<br/><img src="'.$uri.'" alt="some text" /> 
<br/> 
<table border="1"><tr><td><b>ceva</b></td><td>altceva</td></tr><tr><td></td><td></td></tr></table>'); 
fclose($fh); 
?> 

這使用嵌入圖像的數據uri技術。

這將生成一個html文件,該文件在Web瀏覽器中將呈現良好狀態,但至少在標準設置中,圖像在Microsoft Office Word中缺失。然後,在用Word編輯文件時,我用文件中的圖像替換了圖像,Microsoft Word將該文件的內容更改爲Open XML,並添加了一個文件夾new_files,他將導入的圖像(這是一個.png ),圖像的一個.gif版本和一個XML文件:

<xml xmlns:o="urn:schemas-microsoft-com:office:office"> 
    <o:MainFile HRef="../new.doc" /> 
    <o:File HRef="image001.jpg" /> 
    <o:File HRef="filelist.xml" /> 
</xml> 

現在,這是不夠好,或者因爲我想這是所有保存在一個單一的.doc文件。 有沒有辦法在OpenXML格式的.doc文件中嵌入圖像?

回答

5

看這裏http://www.tkachenko.com/blog/archives/000106.html

<w:pict> 
    <v:shapetype id="_x0000_t75" ...> 
    ... VML shape template definition ... 
    </v:shapetype> 
    <w:binData w:name="wordml://02000001.jpg"> 
    ... Base64 encoded image goes here ... 
    </w:binData> 
    <v:shape id="_x0000_i1025" type="#_x0000_t75" 
     style="width:212.4pt;height:159pt"> 
     <v:imagedata src="wordml://02000001.jpg" 
      o:title="Image title"/> 
    </v:shape> 
</w:pict> 
+0

我不知道其他唯一的方法,這是什麼代碼使用的docx和在哪裏使用這個,在PHP或HTML?你可以再定義一下嗎? – Bajrang 2012-04-23 07:39:05

+0

如果我記得正確,你必須把它放在你生成的'doc'(xml)文件中。或者你可以將你的doc文件保存爲xml,然後檢查它的內部結構,似乎這是我用這種方式 – llamerr 2012-04-23 11:26:18

2

看一看在phpdocx庫產生真正的.docx文件而不是HTML文件擴展名爲.doc

PS擴展應嚴格進行.DOCX而非.DOC開放XML的Word 2007個文件

+1

對不起,我不能因爲我的目標受衆是不使用辦公室2007 – 2010-06-15 15:54:35

+1

我知道的是使用PHP的COM擴展 – 2010-06-15 15:58:45

3

PHPWord可以寫他們http://phpword.codeplex.com/(注:由同一個人其仍處於測試階段,我用PHpExcel很多了,從來沒有嘗試過的Word版)。

+0

謝謝..你的文章幫助我..我選擇贊成phpword..did你甚至找到更好的解決方案? – mysterious 2011-03-14 06:13:21

+0

@mysterious:不,不需要一個新的解決方案,因爲我寫了答案 – Steve 2011-03-15 19:43:37

4

有一個PHPWord項目來處理PHP中的MS Word。

PHPWord是一個用PHP 編寫的庫,用於創建Word文檔。沒有Windows 操作系統需要使用 ,因爲結果是docx文件 (Office Open XML),所有主要的辦公軟件都可以打開 。

2

OpenTBS可以使用模板技術在PHP中創建DOCX(和其他OpenXML文件)動態文檔。

沒有臨時文件需要,沒有命令行,所有在PHP中。

它可以添加或刪除圖片。創建的文檔可以作爲HTML下載,保存在服務器上的文件或PHP中的二進制內容生成。

它也可以合併OpenDocument文件(ODT,ODS,ODF,...)

http://www.tinybutstrong.com/opentbs.php

相關問題