使用PageOffice---FileMaker元件功能簡介
應用場景
在一些特殊應用場合,客戶希望在伺服器上生成文件的同時並填充資料,客戶端的頁面不顯示開啟文件。
目前伺服器上生成文件的方案就是採用SharePoint或VSTO,SharePoint高昂的價格令人望而生畏,在此不討論該方案。由於歷史遺留問題,Office本來是設計與COM協同工作的,這就使得從一開始VSTO就有點"水土不服"。.net程式碼通過封裝COM與Office通訊,但是有時這種配合卻並不協調,Office物件模型並不總是遵循.net設計所採用的命名規則和設計模式,而且伺服器上生成文件對伺服器壓力很大,編碼比較複雜,開發過程非常消耗時間和精力。
所以針對這一系列的問題,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為例)(專業版、企業版)
PageOffice.WordWriter.WordDocument doc = new PageOffice.WordWriter.WordDocument(); //給資料區域賦值,即把資料填充到模板中相應的位置 doc.OpenDataRegion("PO_company").Value = "北京卓正志遠軟體有限公司" ; FileMakerCtrl1.SetWriter(doc); FileMakerCtrl1.ServerPage = Request.ApplicationPath + "/pageoffice/server.aspx"; FileMakerCtrl1.SaveFilePage = "Savemaker.aspx"; //OnProgressComplete為回撥函式,文件生成之後在頁面裡觸發此js事件。 //如果您需要響應此事件,您需要在當前 JSP 頁面裡定義一個 JavaScript 函式。 FileMakerCtrl1.JsFunction_OnProgressComplete = "OnProgressComplete()"; FileMakerCtrl1.FillDocument(Server.MapPath("doc/template.doc"), PageOffice.DocumentOpenType.Word);
OnProgressComplete的使用: 比如需要實現檔案生成後彈出另存為對話方塊,讓使用者儲存檔案到本地電腦,那麼js可以這樣寫:
function OnProgressComplete() { document.getElementById("FileMakerCtrl1").ShowDialog(2); //彈出另存對話方塊 }
2.動態將word文件轉換為pdf文件並上傳到伺服器
請參考PageOffice產品開發包中Samples4的示例:
二、34、FileMaker轉換單個文件為PDF(以Word為例) (專業版、企業版)
PageOffice.WordWriter.WordDocument doc = new PageOffice.WordWriter.WordDocument();
//給資料區域賦值,即把資料填充到模板中相應的位置
doc.OpenDataRegion("PO_company").Value = "北京卓正志遠軟體有限公司" ;
FileMakerCtrl1.SetWriter(doc);
FileMakerCtrl1.ServerPage = Request.ApplicationPath + "/pageoffice/server.aspx";
FileMakerCtrl1.SaveFilePage = "Savemaker.aspx";
//OnProgressComplete為回撥函式,文件生成之後在頁面裡觸發此js事件。
//如果您需要響應此事件,您需要在當前 JSP 頁面裡定義一個 JavaScript 函式。
FileMakerCtrl1.JsFunction_OnProgressComplete = "OnProgressComplete()";
FileMakerCtrl1.FillDocumentAsPDF(Server.MapPath("doc/template.doc"),
PageOffice.DocumentOpenType.Word, "a.pdf");
3.批量生成文件並上傳到伺服器
請參考PageOffice產品開發包中Samples4的示例:
三、1、FileMaker批量轉換文件(以Word為例)(專業版、企業版)
批量生成文件就是基於FileMaker轉換單個文件所使用的技術,在OnProgressComplete事件中執行js方法重新整理頁面中的iframe頁面迴圈的載入生成不同的檔案。
FileMakerCtrl和PageOfficeCtrl的區別
FileMakerCtrl本質上就是一個沒有介面的PageOfficeCtrl,也是呼叫客戶端Office程式處理檔案的,都可以實現對文件進行動態填充、動態轉PDF等功能,唯一的區別就是FileMakerCtrl線上開啟填充和轉換文件的時候客戶端頁面不顯示開啟的文件內容,而PageOfficeCtrl顯示開啟的文件內容。