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

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