PageOffice---FileMaker元件功能簡介
應用場景
在一些特殊應用場合,客戶希望在伺服器上生成文件的同時並填充資料,客戶端的頁面不顯示開啟文件。
目前伺服器上生成文件第一種就是方案是採用Jacob, 但是侷限於windows平臺,往往許多Java程式運行於Linux等其他作業系統,在此不討論該方案。
第二是POI,但是伺服器上生成文件對伺服器壓力很大,而且它的Excel處理勉強可以, Word模組還侷限於讀取Word的文字內容,寫Word檔案的功能就更弱;另一個致命的問題是,處理doc格式和處理docx格式的類幾乎完全不同,要分開針對不同的格式寫不同的程式碼,這就意味著使用者上傳的docx格式檔案如果使用了doc的副檔名,程式馬上崩潰。而且POI結構混,編碼比較複雜,開發過程非常消耗時間和精力。
所以針對這一系列的問題,PageOffice開發出來了FileMakerCtrl元件,該元件完全符合PageOffice的架構設計,FileMakerCtrl在客戶端生成Office或PDF文件並上傳到伺服器,但是並不在Web網頁裡顯示Office文件。
FileMakerCtrl物件使用說明
FileMakerCtrl 類是PageOffice開發平臺中的核心類。和PageOfficeCtrl控制元件不同,FileMakerCtrl在Web網頁裡不顯示Office文件,而是直接線上生成Office文件或將Office文件轉換成PDF文件,或動態生成PDF文件。
注:以下程式碼以word為例
1.動態填充word文件並上傳到伺服器
請參考PageOffice產品開發包中Samples4的示例:
二、13、FileMaker轉換單個文件(以Word為例)(專業版、企業版)
FileMakerCtrl fmCtrl = new FileMakerCtrl(request); fmCtrl.setServerPage(request.getContextPath()+"/poserver.zz"); WordDocument doc = new WordDocument(); //給資料區域賦值,即把資料填充到模板中相應的位置 doc.openDataRegion("PO_company").setValue("北京卓正志遠軟體有限公司"); fmCtrl.setWriter(doc); fmCtrl.setSaveFilePage("SaveMaker.jsp"); //OnProgressComplete為回撥函式,文件生成之後在頁面裡觸發此js事件。 //如果您需要響應此事件,您需要在當前 JSP 頁面裡定義一個 JavaScript 函式。 fmCtrl.setJsFunction_OnProgressComplete("OnProgressComplete()"); fmCtrl.fillDocument("doc/template.doc", DocumentOpenType.Word);
OnProgressComplete的使用: 比如需要實現檔案生成後彈出另存為對話方塊,讓使用者儲存檔案到本地電腦,那麼js可以這樣寫:
function OnProgressComplete() { document.getElementById("FileMakerCtrl1").ShowDialog(2); //彈出另存對話方塊 }
2.動態將word文件轉換為pdf文件並上傳到伺服器
請參考PageOffice產品開發包中Samples4的示例:
二、34、FileMaker轉換單個文件為PDF(以Word為例) (專業版、企業版)
FileMakerCtrl fmCtrl = new FileMakerCtrl(request);
fmCtrl.setServerPage(request.getContextPath()+"/poserver.zz");
WordDocument doc = new WordDocument();
doc.openDataRegion("PO_company").setValue("北京卓正志遠軟體有限公司");
fmCtrl.setWriter(doc);
fmCtrl.setSaveFilePage("SaveMaker.jsp");
fmCtrl.setJsFunction_OnProgressComplete("OnProgressComplete()");
fmCtrl.fillDocumentAsPDF("doc/template.doc",DocumentOpenType.Word, "a.pdf");
3.批量生成文件並上傳到伺服器
請參考PageOffice產品開發包中Samples4的示例:
三、1、FileMaker批量轉換文件(以Word為例)(專業版、企業版)
批量生成文件就是基於FileMaker轉換單個文件所使用的技術,在OnProgressComplete事件中執行js方法重新整理頁面中的iframe頁面迴圈的載入生成不同的檔案。
FileMakerCtrl和PageOfficeCtrl的區別
FileMakerCtrl本質上就是一個沒有介面的PageOfficeCtrl,也是呼叫客戶端Office程式處理檔案的,都可以實現對文件進行動態填充、動態轉PDF等功能,唯一的區別就是FileMakerCtrl線上開啟填充和轉換文件的時候客戶端頁面不顯示開啟的文件內容,而PageOfficeCtrl顯示開啟的文件內容。