2011-10-24 159 views
2

有沒有人有任何編輯DOCX模板的經驗。我的php管理員區域需要修改docx模板的功能,這個功能將被使用很多,所以內存很重要。php docx模板修改

我發現phpword這是在測試階段,它的工作原理但不是100%

我一直在谷歌上搜索,發現phpdocx,有沒有人用這個,可以給我一些建議嗎?

是否有任何其他解決方案,我需要的是能夠更改文本和可能在docx模板中的圖像。

我將準備支付一項服務,但不是大衆和一次性許可證的費用將是首選。

回答

9

您應該嘗試OpenTBS

這是一個開源PHP庫,它使用模板技術構建DOCX。

沒有臨時目錄,不需要額外的exe。首先用MsOffice創建DOCX,XLSX,PPTX,(ODT,ODS,ODP也支持,即OpenOffice文件)。然後,您使用OpenTBS加載模板並使用模板引擎更改內容(簡單,請參閱演示)。最後,您可以在需要的地方保存結果。它可以是一個新文件,一個下載流,一個PHP二進制字符串。

OpenTBS也可以更改圖片圖表在文檔中。

+0

我正要回來說,我發現這個東西ð你們認爲。該網站可以做一個重新設計,使閱讀文檔更容易,但我想我終於找到了我後,謝謝。 –

+1

OpenTbs做我需要的,但我已經遇到了一個障礙,我將如何替換具有某些名稱,圖片,圖片,圖片等模板中的圖像,而無需在每個圖片後插入[]標籤。我已經搜索了這篇文章,但只有開放式辦公文檔類型的解決方案。 http://stackoverflow.com/questions/1780130/generate-odt-documents-with-dynamic-images-in-php –

+0

嗨,在文檔中使用[]標記使您可以在沒有任何技術考慮的情況下更改圖像。更不用說當您使用Ms Office時,圖片沒有名字或沒有可見的ID。 OpenTBS讓你直接添加或刪除Docx中的內部文件。但還沒有改變現有的內部文件。 – Skrol29

0

Phpdocx適合您的需求。在docx文檔上使用基於$ variable $的非常簡單的模板格式,因此它非常容易與庫一起使用。我使用了幾個月,對我來說是一個很好的工具。

1
<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Employee Details</title> 
    </head> 
    <body> 
    <form method="post" action="#"> 
     <input type="text" name="e_name" />   
     <input type="text" name="e_email" /> 
     <input type="submit" name="e_submit" /> 
    </form> 
    </body> 
    <?php 
    if(isset($_POST["e_submit"])) 
    { 
     $name=(string) $_POST["e_name"]; 
     $email=(string) $_POST["e_email"]; 

     $source='template1.docx'; 
     $destination='template_'.$name.'.docx'; 
     $temp='template_'.$name.'.docx'; 

     copy($source,$temp); 

     $zip=new ZipArchive; 

     $fileXml='word/document.xml'; 
     if($zip->open($temp) === TRUE) 
     { 
      $old=$zip->getFromName($fileXml); 

      $new=str_replace('{{Name}}',$name,$old); 
      $new=str_replace('{{Email}}',$email,$new); 

      $zip->deleteName($fileXml); 
      $zip->addFromString($fileXml,$new); 
      $zip->close(); 

      header("Content-Type: application/force-download"); 
      header('Content-Type: application/msword'); 
      header('Content-Disposition: attachment; filename="'.$destination.'"'); 

      readfile($destination); 
      unlink($destination); 
      exit(); 
     } 
    } 
    ?> 
</html> 
+0

請解釋你的答案。 – zuluk