台灣最大程式設計社群網站
線上人數
1434
 
會員總數:244807
討論主題:188842
歡迎您免費加入會員
討論區列表 >> PHP >> php word轉html問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
php word轉html問題
價值 : 300 QP  點閱數:6288 回應數:13

樓主

kg
中級專家
3878 25
3311 814
發送站內信

各位前輩大家好,小弟又有一問題想請問大家
今天小弟有一需求就是用php讀取word檔並且將其轉為html儲存
以下是小弟寫的一個測試code


執行結果為:
Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `word.application': CoInitialize �|���Q�I�s�C ' in C:\AppServ\www\test.php:5 Stack trace: #0 C:\AppServ\www\test.php(5): com->com('word.applicatio...') #1 {main} thrown in C:\AppServ\www\test.php on line 5

我的環境是:
OS : Windows 7 64bit
Office: Office 2010
web: AppServ 2.5.10 (apache 2.2.8,php 5.2.6,mysql 5.0.51b)

想請問一下哪裡有問題

搜尋相關Tags的文章: [ php word to html ] ,
本篇文章發表於2013-01-03 19:23
== 簽名檔 ==
閒閒無所事事到處打醬油混水摸魚的老人.....
啊!那邊發現未開發農地!
碼農模式啟動!!!
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

香帥
檢舉此回應
我有幫您試過
程式碼改如下

執行結果是ok
關鍵在
ini_set("com.allow_dcom","true");
沒作用,剛脆將他註解,
並將php.ini的
;com.allow_dcom = true
分號拿掉變成
com.allow_dcom = true
重新啟動Apache就ok
執行結果顯示
Loaded Word, version 11.0 Word to html
並在
c:\Appserv\www\
正常產生一個aaa.htm檔案
c:\Appserv\www\aaa.htm
本篇文章回覆於2013-01-04 00:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

kg
檢舉此回應
回香帥:
首先再次感謝你的回覆,我上面的code最主要問題當office為2003之前的版本都沒問題
但0ffice 2007之後的版本執行時就會出現

Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `word.application': CoInitialize �|���Q�I�s�C ' in C:\AppServ\www\test.php:5 Stack trace: #0 C:\AppServ\www\test.php(5): com->com('word.applicatio...') #1 {main} thrown in C:\AppServ\www\test.php on line 5

的錯誤,然後我有去查過資料,好像office 2007後就沒有word.application這個object了,導致php執行new COM("Word.Application")時就會出錯
本篇文章回覆於2013-01-04 01:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

香帥
檢舉此回應
我有幫您試,我移除我的office2003,用office2010
執行結果如您所說會出現..`word.application': CoInitialize ..錯誤
,好像office 2007後就沒有word.application這個object了,這是不對的
只是dcom設定,做好就ok
步驟如下:
1.執行dcomcnfg.exe
2.選元件服務->電腦->我的電腦->DCOM設定->找到Microsoft Word 97-2003 文件->按右鍵->內容->位置
前兩個都打 v->套用->確定
3.按安全性標籤->啟動和啟用權限->自訂->編輯->新增->user->將所有權限打v->確定
4.按安全性標籤->存取權限->自訂->編輯->新增->user->將所有權限打v->確定
5.按安全性標籤->設定權限->自訂->編輯->新增->user->將所有權限打v->確定
6.套用->確定
7.按識別身分標籤->選互動式使用者->套用->確定
以上設定完成後再執行您的php就會有正常結果
執行結果如下
Loaded Word, version 14.0 Word to html
都正常ok

本篇文章回覆於2013-01-04 19:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

香帥
檢舉此回應
補充3樓設定,我懶得一個一個測試設定,因此全開權限
若您可以的話,可以慢慢測試,只開有相關的就好,以免影響安全性問題
本篇文章回覆於2013-01-05 01:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

kg
檢舉此回應
回香帥:
我用你上面方式是可以轉換了,但只能.doc轉.html,若是用.docx轉.html它會一直run但不會產生.html
最後php timeout (max_execution_time我設3600)
本篇文章回覆於2013-01-06 13:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

香帥
檢舉此回應
在寫3樓文章時
.docx我也有幫您試,也是ok
也會產生.htm
但我試.docx的檔案內容只有三個字abc
.doc的檔案內容也只有三個字aaa
我想其他的也都應該可以的
我的是office2010,我不知您的版本是多少,不過這都沒關係,主要是您的要可以才對,
我的可以,您的不可以您是第6個
第5個在
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20120222003759KB5&fumcde=BRD20120222003759KB5
但他隔了三個月後在四樓的回答說可以了
同樣的我在那篇文章三樓說過,也要在這再說一遍
"我可以您不行的案例,還是要借助teamviewr 或 vnc 幫您看"
若您還不能解決問題時再幫您看吧
本篇文章回覆於2013-01-06 18:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

香帥
檢舉此回應
對了,我原已為您有些應該是會的,所以沒再提醒您
您改為.docx
這一行
$htmlpath=substr($wfilepath,0,-4);
應該要跟者改為
$htmlpath=substr($wfilepath,0,-5);
才會正常產生.htm喔
可能您忘了改,所以才會出錯.
本篇文章回覆於2013-01-06 20:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

香帥
檢舉此回應
又有一個忘了提醒您,因為您的.docx不行,我現都在幫您想原因
除了7樓所說之外,另外一個
new COM("Word.Application")
改為您的製造docx的版本,像我的是14
就用
new COM("Word.Application.14")
就是說您的docx要用正確的版本來開會更妥當
最後7,8樓的補充,您試過之後再告訴我結果.(應該還不必用到teamviewr 或 vnc 幫您看)
本篇文章回覆於2013-01-06 20:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

kg
檢舉此回應
回香帥:
首先再次感謝你的回覆,我用你上面的方法以可將.docx轉成.html
但現在又出現另一問題就是當我.docx轉.html時裡面的圖片與文字的排版會亂掉,這部份不知道要如何解決
本篇文章回覆於2013-01-07 06:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

kg
檢舉此回應
new COM("Word.Application.14");會出現'Failed to create COM object `Word.Application.14': Not enough storage is available to process this command
本篇文章回覆於2013-01-07 11:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

香帥
檢舉此回應
請將您的.docx及轉成的.htm兩個檔案壓縮成.zip上傳
我再去下載到我server比較看看
另您的版本是2010才是.14
若您沒14版本當然會出錯
本篇文章回覆於2013-01-07 15:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

kg
檢舉此回應
回香帥:
下面連結內容是test.php、test.docx、test.html、test.files,其中執行test.php會產生test.html
然後用ie開test.html會發現原本test.docx轉換成test.html時排版都亂掉了

http://122.116.110.101/Newtest.zip

另外我是用office 2010

ps:test.docx內容看起來有很亂是因為保密原則
本篇文章回覆於2013-01-07 22:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

香帥
檢舉此回應
我幫您試過
當然會亂掉
因為不用php,直接用word打開後,按另存新檔
選網頁(*.htm;*.html)
就會出現以下錯誤讓您選擇

絕對列高變成最小列高1個錯誤及表格及圖文框4個錯誤
word本身就顯示錯誤會變亂,php更不用說
因此建議您修改docx文件,按另存新檔
選網頁(*.htm;*.html),都沒出現錯誤時,再以您的php去測試才為準確
本篇文章回覆於2013-01-08 00:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.