欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用pageoffice ,FileMaker组件功能简介

程序员文章站 2022-06-02 22:48:23
...

应用场景

在一些特殊应用场合,客户希望在服务器上生成文档的同时并填充数据,客户端的页面不显示打开文档。

目前服务器上生成文档的方案就是采用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显示打开的文档内容。