2010-06-30 29 views
2

客戶要求我爲他的正在運行的webapp構建一個模塊,該模塊可以加載docx文件並根據文檔中的標題提取數據。我知道docx只是一個zip文件,我所需要的大部分內容可以在word/document.xml中找到,但我並不期望解析lists/styles/images/tables以及其他需要從其中翻譯的東西OOXML轉換爲HTML。PHP OOXML庫?

這種格式是否有任何PHP庫?我確實需要某種靈活性:只是一個OOXML到HTML轉換器不會削減它,我需要將文檔分成幾部分。

回答

4

如果它是純粹的docx,你可以試試phpdocx ......不知道它是讀還是隻寫。 PHPWord尚未閱讀,只寫(儘管我正在處理它)。

如果您只需要屬性信息,那麼您可以在zip中的/docProps/core.xml文件中找到它(可能位於/docProps/app.xml,具體取決於您需要的屬性),因此您可以繞過大部分包含文本,樣式,圖像等的文件。爲了驗證文件名,[Content_Types] .xml將核心和應用程序屬性文件的文件名保存爲application/vnd.openxmlformats-officedocument.spreadsheetml。 sheet.main + xml和application/vnd.openxmlformats-officedocument.extended的屬性+ XML

編輯: 如果您需要的標題,那麼你將需要解析的文件,而不僅僅是性能。這將意味着標識標題樣式,併爲具有這些樣式的實體解析文本。

+0

我需要所有適當的樣式,只需根據找到的標題拆分文檔即可。我只需要讀取,不需要寫入...和phpdocx只寫入。 – 2010-06-30 07:53:33

+0

對編輯的迴應:我知道我需要解析文檔;)我只是在尋找能讓我更容易做到這一點的圖書館。最好我想通過轉換爲html內容的文檔的部分。 – 2010-06-30 07:58:37

+0

除了我提到的兩個,我不知道任何其他PHP庫與docx格式文件一起工作。如果您需要自己開發這些內容,我可以指出格式的文檔:如果您找到任何閱讀器庫,請分享。 總是有運行Word的Windows服務器的回退選項,並使用PHP COM – 2010-06-30 08:03:04

2

OpenTBS可以使用模板技術在PHP中讀取和修改DOCX(和其他OpenXML文件)文檔。 沒有臨時文件需要,沒有命令行,全部使用PHP。

但是,如果您只需要讀取DOCX文件的一部分,那麼您可以使用類TbsZip。它可以讀取zip壓縮文件(與任何OpenXML文件一樣,DOCX是一個主要包含XML文件的zip壓縮文件)。

在DOCX文件中,頁眉和頁腳子文件通常是「/word/header1.xml」和「/word/footer1.xml」。 只有在定義頁眉/頁腳時才存在。 對於奇數頁面(通常是「/word/header2.xml」和「/word/footer2.xml」),可能還有一些可選的XML子文件。 併爲第一頁(通常爲「/word/header3.xml」和「/word/footer3.xml」)提供一對可選的子文件。

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

0

你也可以使用這個庫https://poi.apache.org/ 並通過PHP的java橋http://php-java-bridge.sourceforge.net/pjb/ 它們連接起來 - 安裝Tomcat服務器 - 在web應用文件夾的地方java的橋樑,並添加POI庫 - 那麼你可以使用這些庫來提取標題樣式。 這個API有很好的文檔記錄,你有很多選擇。 這樣做的PHP庫會更好,但如果它適用於您或其他人,則可以嘗試使用此方法