## **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文档并上传到服务器**
>[info]请参考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);
~~~
>[warning] **OnProgressComplete的使用:** 比如需要实现文件生成后弹出另存为对话框,让用户保存文件到本地电脑,那么js可以这样写:
>~~~
>function OnProgressComplete() {
> document.getElementById("FileMakerCtrl1").ShowDialog(2); //弹出另存对话框
> }
**2.动态将word文档转换为pdf文档并上传到服务器**
>[info]请参考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.批量生成文档并上传到服务器**
>[info]请参考PageOffice产品开发包中Samples4的示例:
> 三、1、FileMaker批量转换文档(以Word为例)(专业版、企业版)
批量生成文档就是基于FileMaker转换单个文档所使用的技术,在OnProgressComplete事件中执行js方法刷新页面中的iframe页面循环的加载生成不同的文件。
### **FileMakerCtrl和PageOfficeCtrl的区别**
----
FileMakerCtrl本质上就是一个没有界面的PageOfficeCtrl,也是调用客户端Office程序处理文件的,都可以实现对文档进行动态填充、动态转PDF等功能,唯一的区别就是FileMakerCtrl在线打开填充和转换文档的时候客户端页面不显示打开的文档内容,而PageOfficeCtrl显示打开的文档内容。
- 序言
- 产品简介
- PageOffice试用版和和正式版的区别
- PageOffice对客户端的要求
- PageOffice客户端安装步骤
- PageOffice常用功能与工作原理
- OA系统中的文档在线编辑及流转
- 痕迹保留、键盘批注、手写批注
- 文件并发控制功能
- 与数据库的关系
- SaveDataPage和SaveFilePage的区别
- 调用ZoomSeal签章系统中的印章
- 使用RunMacro运行Office的宏
- 为什么采用弹窗方式打开文件
- POBrowser弹窗方式的具体使用
- Word篇
- 常用接口对象
- WordDocument类
- DataRegion类
- DataTag类
- Paragraph类
- Shape类
- Table类
- Column类
- Row类
- Cell类
- WaterMark类
- DataRegion与DataTag的区别
- 编辑模板中的数据区域
- 动态填充Word文档
- 动态插入Word表格
- 动态创建数据区域
- 数据区域点击事件
- 实现Word文档编辑区域控制
- Word文档全文检索
- Word文件版本对比功能
- 实现用户自定义Word模板
- 实现多个Word文件合并
- Excel篇
- 常用接口对象
- Workbook类
- Sheet类
- Table类
- Cell类
- 动态填充Excel文档
- Excel指定单元格点击事件
- 实现用户自定义Excel模板
- 读取Excel文档中的数据
- 隐藏Excel的行号列标
- Java篇
- PageOffice集成说明
- 动态生成Word文件
- 给Word中的Table赋值
- 动态生成Excel文件
- Maven项目中引用PageOffice
- FileMaker组件功能简介
- ASP.NET篇
- PageOffice集成说明
- 给Word中的Table赋值
- 动态生成Word文档
- FileMaker组件功能简介
- 其他
- POPDF组件功能简介
- PPT相关功能简介
- 实现多人同时编辑一份文档
- PageOffice与Apache POI的区别
- 如何录制宏和编辑宏
- PDF篇
- PDF盖章