1. 程式人生 > >PageOffice---FileMaker元件功能簡介

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顯示開啟的文件內容。