91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用LiveDocx和Zend Framework生成基于模板的文檔

發布時間:2021-11-30 17:27:16 來源:億速云 閱讀:143 作者:小新 欄目:編程語言

小編給大家分享一下如何使用LiveDocx和Zend Framework生成基于模板的文檔,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

使用PHP生成打印良好的格式良好的PDF文檔并非易事。傳統上,使用PHP生成PDF有兩種主要方法。如果有足夠的時間和耐心,兩者都可以完成工作,但仍然有很多不足之處:

HTML-to-PDF:這種方法廣泛用于主流應用程序。這里使用眾多開源庫之一以編程方式創建HTML文檔并將其轉換為PDF。但是,由于HTML不是面向頁面的格式(如PDF),因此無法在HTML和PDF之間執行1對1映射。典型的文字處理文件格式功能,例如頁眉和頁腳,孤兒和寡婦甚至頁碼都不能用HTML表示。

程序化:此方法可以完全控制生成的PDF。但是,它要求從程序代碼中設置每行文本的x和y坐標,每個幾何形狀和圖形。這不僅是一個非常耗時的解決方案,而且非常脆弱:每當圖形設計師更改文檔的布局時,程序員必須重新編寫他或她的程序代碼。

一種全新的方法

在本文中,作者提出了一種全新的第三種方法。它依賴于在WYSIWYG環境中創建的模板,例如Microsoft?Word或Open Office,然后使用PHP填充數據。生成的文檔不僅可以保存為PDF,還可以保存為DOCX,DOC和RTF。

在我們深入研究這種新方法的內部工作方式之前,讓我們先來看一個實際的例子。以下PHP 5代碼說明了PDF生成,其中模板template.docx [46.7 KB]中的合并字段軟件,被許可方和公司用PHP中的標量數據填充。生成的文檔document.pdf [104.7 KB]已創建并寫入磁盤。

$ phpLiveDocx 
= 
new 
Zend_Service_LiveDocx_MailMerge 
(    array 
('username' 
=> 
'yourUsername' 
,'password' 
=> 
'yourPassword' 
)); 
$ phpLiveDocx 
- > 
setLocalTemplate 
('template.docx' 
); 
$ phpLiveDocx 
- > 
assign 
('software' 
,'Magic Graphical Compression Suite v1.9' 
); 
$ phpLiveDocx 
- > 
assign 
('licensee' 
,'Henry Smith' 
); 
$ phpLiveDocx 
- > 
 

 
        

 
 
 
        

 
 
 
    

 

 
 

 
 

 
 

 
 
'公司' 
,'Megasoft合作' 
); 
$ phpLiveDocx 
- > 
createDocument 
(); 
$ document 
= 
$ phpLiveDocx 
- > 
retrieveDocument 
('pdf' 
); 
file_put_contents 
('document.pdf' 
,$ document 
); 
unset 
($ phpLiveDocx 
);

本文中演示的代碼將隨Zend Framework 1.10一起提供。雖然在撰寫本文時,沒有正式發布日期,但預計將于2009年第四季度發布1.10。同時,您可以檢查標準孵化器 SVN存儲庫中的組件。

介紹LiveDocx

LiveDocx是一種基于SOAP的文檔生成服務,基于市場領先的文字處理組件TX Text Control .NET。LiveDocx允許在任何支持SOAP的編程語言中填充文字處理模板。生成的文檔可以保存為任何支持的格式。但是,本文主要介紹如何在PHP 5中使用LiveDocx。

LiveDocx的Zend Framework實現的組件位于標準Zend Framework分發文件中的/ Zend / Service / LiveDocx /。可以將LiveDocx直接與PHP 5 SoapClient一起使用,不使用Zend Framework,也可以使用第三方庫NuSOAP。NuSOAP方法甚至允許在PHP 4中使用LiveDocx。然而,本文主要關注PHP 5中的官方Zend Framework組件。

LiveDocx的關鍵點是將生成格式良好,可打印的文字處理文檔所需的工作量減少到最低限度。對于最終用戶,創建任何支持的文件格式所涉及的邏輯是相同的。例如,無論您是想要PDF還是RTF文件,代碼(一個參數除外)都是相同的。

LiveDocx的核心開發人員還希望確保模板的生成盡可能簡單,在最終用戶已經非常熟悉的環境中。因此,您可以在Word或Open Office中創建模板。

模板和文檔

在整篇文章中,我們引用術語模板文檔。了解兩者之間的區別非常重要。

模板:術語模板用于指代輸入文件,包含格式和文本字段。模板可以采用以下任何一種文件格式:

  • DOCX - Office Open XML格式

  • DOC - Microsoft?WordDOC格式

  • RTF - 富文本格式

  • TXD - TXTextControl?格式

模板可以本地存儲在客戶端計算機(發起SOAP請求的計算機上)上,也可以遠程存儲在后端服務器上。決定使用哪一個取決于您正在開發的應用程序類型。

如果在本地存儲模板,則必須將模板與應在每個請求上填充的數據一起傳輸。如果模板在每個請求中保持不變,則此方法效率非常低。最好將模板上傳到后端服務器一次,然后在所有后續請求中引用它。這樣,只有應填充的數據才會從客戶端傳輸到后端服務器。使用LiveDocx的大多數應用程序屬于此類別。

另一方面,如果您有一個不斷變化的模板,或者您允許最終用戶上傳模板的應用程序,您可以考慮在本地存儲模板并在每個請求時傳輸它們。這種方法顯然較慢,因為每個請求都包含模板本身,以及填充它的數據。

文檔:術語文檔用于指生成的輸出文件,其中包含模板文件,填充數據 - 即完成的文檔。文檔可以使用以下任何一種文件格式保存:

  • DOCX - Office Open XML格式

  • DOC - Microsoft?WordDOC格式

  • HTML - XHTML 1.0過渡格式

  • RTF - 富文本格式

  • PDF - Acrobat?便攜式文檔格式

  • TXD - TX文本控制格式

  • TXT - ANSI純文本

除了上述文字處理文件格式外,文檔還可以保存為以下圖像文件格式:

  • BMP - 位圖圖像格式

  • GIF - 圖形交換格式

  • JPG - 聯合圖像專家組格式

  • PNG - 便攜式網絡圖形格式

  • TIFF - 標記圖像文件格式

  • WMF - Windows元文件格式

使用LiveDocx

在本節中,我們將從頭開始查看使用LiveDocx創建文檔的整個過程。

在Microsoft?Word2007中創建模板

任何LiveDocx項目的第一步都是創建模板。為此,您可以使用Open Office或Microsoft?Word。出于本文的目的,我們將使用Microsoft?Word2007.有關使用Open Office的說明,請查看LiveDocx博客。

在Microsoft?Word2007中插入合并字段首先在Microsoft?Word2007中創建一個新文件,然后將模板文件另存為template.docx

如何使用LiveDocx和Zend Framework生成基于模板的文檔

然后,您可以開始撰寫模板,使用“ 字段”對話框插入文本,圖形和合并字段,如右圖所示。

一段時間后,您將擁有一個模板,其中包含圖像,文本和許多合并字段。合并字段由{MERGEFIELD name}表示,并將在下一步中填充標量數據。Microsoft?Word2007中模板的以下屏幕截圖說明了模板的外觀:

如何使用LiveDocx和Zend Framework生成基于模板的文檔

完成后保存模板template.docx [/ img] [46 KB]。

在LiveDocx中分配標量數據類型

現在我們有了模板文件,下一步就是用數據填充它。在下面的示例中,我們將向模板分配標量數據類型(在本例中為字符串)。

$ phpLiveDocx 
= 
new 
Zend_Service_LiveDocx_MailMerge 
(    array 
('username' 
=> 
'yourUsername' 
,'password' 
=> 
'yourPassword' 
)); 
$ phpLiveDocx 
- > 
setLocalTemplate 
('template.docx' 
); 
$ phpLiveDocx 
- > 
assign 
('software' 
,'Magic Graphical Compression Suite v1.9' 
); 
$ phpLiveDocx 
- > 
assign 
('licensee' 
,'Henry Smith' 
); 
$ phpLiveDocx 
- > 
 

 
        

 
 
 
        

 
 
 
    

 

 
 

 
 

 
 

 
 
'公司' 
,'Megasoft合作' 
); 
$ phpLiveDocx 
- > 
assign 
('date' 
,'2009年10月10日' 
); 
$ phpLiveDocx 
- > 
assign 
('time' 
,' 
14:12:01 
' 
); 
$ phpLiveDocx 
- > 
assign 
('city' 
,'Frankfurt' 
); 
$ phpLiveDocx 
- > 
assign 
('country' 
,'Germany' 
); 
$ phpLiveDocx 
- > 
createDocument 
();
   

     

 

     

 

     

 

   
 

 
 
retrieveDocument 
('pdf' 
); 
file_put_contents 
('document.pdf' 
,$ document 
); 
unset 
($ phpLiveDocx 
);

對于許多應用程序,特別是那些使用PDF文件進行存檔的應用程序,您可能希望設置PDF文件的元數據。您可以通過使用應嵌入PDF文件的元數據指定關聯數組來執行此操作。在()setDocumentProperties方法前必須調用createDocument() 

$ documentProperties 
= 
array 
('title' 
=> 
'Magic Graphical Compression Suite v1.9' 
,'author' 
=> 
'Megasoft Co-operation' 
,'subject' 
=> 
'Magic Graphical Compression Suite v1.9' 
,'keywords' 
> 
'圖形,魔法,壓縮,套件,許可' 
); 
$ phpLiveDocx 
- > 
setDocumentProperties 
($ documentProperties 
);

生成的文檔document.pdf [104 KB]將寫入磁盤,現在可以在您喜歡的PDF閱讀器中打開,例如Ubuntu中隨附的文檔查看器:

如何使用LiveDocx和Zend Framework生成基于模板的文檔

在LiveDocx中分配復合數據類型

除了在前一個示例中分配給模板的標量數據類型之外,還可以分配復合數據類型,例如關聯數組。考慮模板template.doc [20.5 KB]和生成的文檔document.pdf [77.6 KB]。特別是,請看一下模板的以下部分(點擊放大):

如何使用LiveDocx和Zend Framework生成基于模板的文檔

如何使用LiveDocx和Zend Framework生成基于模板的文檔Microsoft?Word和如何使用LiveDocx和Zend Framework生成基于模板的文檔Microsoft?Word中的書簽之間的模板部分在最終文檔中重復,以生成表的行。以下關聯數組的一個子數組用于每一行。

使用以下PHP 5代碼,我們將使用電話連接數據的關聯數組填充模板。為清楚起見,此示例僅顯示分配關聯數組的部分。LiveDocx的實例化以及文檔創建和可檢索的過程與前面的示例相同,并且已被省略:

//實例化LiveDocx 
 
$ billConnections 
= 
array 
(    array 
('connection_number' 
=> 
'+ 11(0)222 333 441' 
,'connection_duration' 
=> 
'00:01:01' 
,'fee' 
=> 
'1.15' 
),    array 
('connection_number' 
=> 
'+ 11(0)222 333 442' 
,'connection_duration' 
=> 
'00:01:02' 
,'fee' 
=> 
'1.15' 
),    array 
('connection_number' 
=> 
'+11(0)222 333 443' 
,'connection_duration' 
=> 

 
        

   

 
 
        

 
 
 
        

                 

 
 
    

 

 
        

   

 
 
        

 
 
 
        

                 

 
 
    

 

 
        

   

 
 
        

 
 '00:01:03' 
,'費用' 
= 
''1.15' 
),    數組('connection_number' 
=> 
'+ 11(0)222 333 444' 
,'connection_duration' 
=> 
'00:01:04' 
,'費用' 
=> 
'1.15' 
)); 
$ phpLiveDocx 
- > 
assign 
('connection' 
,$ billConnections 
); 
//創建和檢索文檔

生成的文檔包含下表,其中包含分配的關聯數組中的數據(單擊以放大):

如何使用LiveDocx和Zend Framework生成基于模板的文檔

使用LiveDocx生成圖像文件

除了上面列出的LiveDocx支持的文字處理文件格式之外,您還可以將生成的文檔另存為一個或多個圖像文件。為此,Zend_Service_LiveDocx_MailMerge提供方法getAllBitmaps()getBitmaps()

//實例化LiveDocx 
//獲取所有位圖//(zoomFactor,format)$ bitmaps 
= 
$ phpLiveDocx 
- > 
getAllBitmaps 
(100 
,'png' 
);

同樣,可以檢索特定范圍內頁面的圖像:

//獲取在規定的范圍內的位圖只是//(fromPage,toPage,zoomFactor,格式)$位圖= 
$ phpLiveDocx 
- > 
getBitmaps 
(2 
,2 
,100 
,'PNG' 
);

注意zoomFactor參數。這是一個百分比值,在10%到400%的范圍內。這些方法非常適合于生成所創建文檔的縮略圖圖像,例如,作為預覽在瀏覽器中顯示。

通過迭代$ bitmaps數組,可以將實際的圖像文件寫入磁盤。數組中每個記錄有一頁二進制數據:

//寫入磁盤//(每個記錄一頁)foreach 
($ bitmaps 
as 
$ pageNumber 
=> 
$ bitmapData 
){ 
    $ filename 
= 
sprintf 
('documentPage%d.png' 
,$ pageNumber 
); 
    file_put_contents 
($ filename 
,$ bitmapData 
); 
    printf 
('將%d個字節寫入磁盤為%s。%s' 
,filesize 
($ filename 
),$ filename 
,PHP_EOL 
); 
}
在您自己的應用程序中部署LiveDocx

Zend框架中提供的構成LiveDocx的PHP 5實現的代碼在新BSD許可下發布,因此可以根據許可條款在大多數項目中進行部署,修改和重新分發。但是,實際的LiveDocx SOAP服務器是專有軟件。可以通過三種方式在自己的應用程序中部署SOAP服務。

  1. 免費公共服務器
    對于絕大多數應用程序,開發人員選擇這種方法。Zend Framework組件中引用的默認LiveDocx服務器是免費的公共服務器。它可以完全免費用于您自己的應用程序。注冊 LiveDocx帳戶。

  2. 高級托管服務器
    如果您的應用程序每小時生成數千個文檔,您可以考慮支付少量月費來訪問您自己的個人LiveDocx服務器。與領先的托管服務提供商合作,您可以租用這樣的高級托管服務器。

  3. 本地許可服務器
    如果您的應用程序在一小時內生成的文檔超過一萬個,您可以考慮在本地網絡中安裝LiveDocx服務器。在本地千兆網絡中直接訪問是迄今為止部署LiveDocx的最快方式。

以上是“如何使用LiveDocx和Zend Framework生成基于模板的文檔”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南通市| 鹿泉市| 嘉祥县| 江都市| 监利县| 阿坝县| 牡丹江市| 马鞍山市| 武乡县| 江永县| 平潭县| 南京市| 阿坝县| 桦南县| 吴堡县| 马边| 洪洞县| 翼城县| 高要市| 鄂尔多斯市| 洪泽县| 昌黎县| 惠东县| 秦安县| 洪湖市| 建昌县| 沈阳市| 运城市| 建水县| 洛南县| 阜阳市| 惠水县| 绥芬河市| 宁海县| 松原市| 中牟县| 安乡县| 前郭尔| 东明县| 通榆县| 九江县|