2010-10-27 130 views
2

我想將多個文檔或rtf文件合併到一個文件中,該文件應該是多個文件的相同格式。 我的意思是,如果用戶從列表框中選擇多個rtf模板文件,並單擊網頁上的按鈕,輸出應該是一個單一的rtf文件,它結合了多個rtf模板文件,我應該使用php。通過使用php腳本將多個文檔或rtf文件合併到一個文檔或rtf文件

我還沒有確定模板文件的格式,但它應該是rtf或doc,並且我還假定模板文件也有一些圖像。

我花了很多時間來研究這個庫,但仍然無法找到它。

請幫我看看這裏! :(

在此先感謝。

回答

0

我一直工作在一個類似的項目和havne't設法找到任何PHP(或任何其他開源語言)庫操縱的MSWord文件。我接近的方式。這是一種複雜的,但在這裏工作是我會怎麼做(假設你有一個Linux服務器):

設置:

  1. 安裝JODConverterOpenOffice
  2. 聖(參見http://www.artofsolving.com/node/10

方法(即,通過通過反引號或exec()

  • 解壓調用JODConverter每個文件到其自己的
  • 一個臨時目錄閱讀contents.xml

    1. 將您的MSWord或RTF文件轉換成ODT格式:如何在PHP代碼做)從使用DOM Parser
    2. 提取從每個<office:text>內容的每個解壓縮文檔文件,並連接
    3. 將這個級聯的XML回到正確的位置在之一3210個文件
    4. 重新壓縮該臨時目錄中的內容,並給它一個.odt擴展
    5. 使用JODConverter這個文件再次

    轉換回的MSWord正如我所說,這是不漂亮,但它確實工作。

    如果你正在尋找下井RTF路線,這個問題也可以幫助:Concatenate RTF files in PHP (REGEX)

  • 2

    如果您正在尋找只處理RTF文檔的解決方案,你可以找到一個PHP包合併多個RTF文件位置:

    www.rtftools.com

    這裏是如何將多個文件合併到一起很短的例子:

    include ('path/to/RtfMerger.phpclass') ; 
    
    $merger = new RtfMerger ('sample1.rtf', 'sample2.rtf') ; // You can specify docs to be merged to the class constructor... 
    $merger -> Add ('sample3.rtf') ;       // or by using the Add() method 
    $merger [] = 'sample4.rtf' ;        // or by using the array access methods 
    $merger -> SaveTo ('output.rtf') ;      // Will save files 'sample1' to 'sample4' into 'output.rtf' 
    

    該軟件包允許您處理大於可用內存的文檔。

    +0

    應該指出的是,該解決方案僅適用於PHP 5.4.0及更高版本 – 2017-11-02 15:09:36