com.zhuozhengsoft.pageoffice
类 FileMakerCtrl

java.lang.Object
  继承者 com.zhuozhengsoft.pageoffice.FileMakerCtrl

public class FileMakerCtrl
extends java.lang.Object

FileMakerCtrl 类是PageOffice开发平台中的核心类。和PageOfficeCtrl控件不同,FileMakerCtrl在Web网页里不显示Office文档,而是直接在线生成Office文档或将Office文档转换成PDF文档,或动态生成PDF文档。

版本:
2.0
作者:
北京卓正志远软件有限公司

构造方法摘要
FileMakerCtrl(HttpServletRequest request)
          初始化 FileMakerCtrl 类的新实例。
 
方法摘要
 void createDocumentAs(DocumentVersion docVersion, java.lang.String destFileName)
          创建一个新文档并动态填充生成Office文档。
 void createDocumentAsPDF(DocumentOpenType documentType, java.lang.String destFileName)
          创建一个新文档并动态填充生成PDF文档。
 void fillDocument(java.lang.String documentURL, DocumentOpenType documentType)
          在线动态生成Office文档。
 void fillDocumentAs(java.lang.String documentURL, DocumentOpenType documentType, java.lang.String destFileName)
          在线动态生成Office文档。
 void fillDocumentAsPDF(java.lang.String documentURL, DocumentOpenType documentType, java.lang.String destFileName)
          在线动态生成PDF文档。
 void setFileTitle(java.lang.String value)
          设置在文档导出到本地磁盘的对话框里出现的默认文件名。
 void setHTTPBasic_Password(java.lang.String value)
          打开或保存文档时要求 HTTP Basic 验证的用户密码。
 void setHTTPBasic_UserName(java.lang.String value)
          打开或保存文档时要求 HTTP Basic 验证的用户名。
 void setJsFunction_AfterDocumentOpened(java.lang.String value)
          定义一个 JavaScript 函数响应 AfterDocumentOpened 事件。
 void setJsFunction_OnProgressComplete(java.lang.String value)
          定义一个 JavaScript 函数响应 OnProgressComplete 事件。
 void setOfficeVendor(OfficeVendorType value)
          设置Office办公软件类型。
 void setSaveFilePage(java.lang.String saveFilePage)
          设置 FileMakerCtrl 控件的文档保存页面。
 void setServerPage(java.lang.String serverPage)
          设置 FileMakerCtrl 控件的运行服务页面。
 void setTagId(java.lang.String id)
          此方法非常重要,在FileMakerCtrl的后台Java调用代码末尾处必须调用。
 void setWriter(java.lang.Object writerObj)
          设置 FileMakerCtrl 控件的数据对象。
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

FileMakerCtrl

public FileMakerCtrl(HttpServletRequest request)
初始化 FileMakerCtrl 类的新实例。

方法详细信息

setTagId

public void setTagId(java.lang.String id)
              throws java.lang.Exception,
                     java.io.IOException
此方法非常重要,在FileMakerCtrl的后台Java调用代码末尾处必须调用。

示例代码:修改test.doc文档中名为"company"的DataRegion处的文字为"IBM"。

 //设置 FileMakerCtrl 的运行服务页面
 fmCtrl1.setServerPage("poserver.do"); // 必须
 
 //修改名为"company"的DataRegion处的文字为"IBM"。
 WordDocument doc = new WordDocument();
 doc.openDataRegion("PO_company").setValue("IBM");
 fmCtrl1.setWriter(doc);
 
 //设置用来接收生成的文档的页面
 fmCtrl1.setSaveFilePage("savefile.jsp");
 //开始生成文档
 fmCtrl1.fillDocument("doc/test.doc", DocumentType.Word);
 fmCtrl1.setTagId("FileMakerCtrl1");
 

参数:
id - 前台HTML代码中放置 FileMakerCtrl 标签处开发者自定义的控件ID。
抛出:
java.lang.Exception
java.io.IOException
另请参见:
FileSaver.saveToFile()方法中完整的示例代码,学习如何编写 savefile.jsp 页面的代码接收FileMaker生成的文档。

setFileTitle

public void setFileTitle(java.lang.String value)
设置在文档导出到本地磁盘的对话框里出现的默认文件名。

参数:
value - 文件名。

setServerPage

public void setServerPage(java.lang.String serverPage)
设置 FileMakerCtrl 控件的运行服务页面。

此属性是 FileMakerCtrl 控件的重要属性。ServerPage 页面为 FileMakerCtrl 控件提供必须的运行服务。 在调用 fillDocumentcreateDocument 方法之前,您必须为 FileMakerCtrl 控件设置 ServerPage 属性。

下面的示例展示如何使用 ServerPage 属性。

 fmCtrl1.setServerPage("poserver.do"); // 此行必须
 fmCtrl1.fillDocument("doc/test.doc", DocumentOpenType.Word);
 fmCtrl1.setTagId("FileMakerCtrl1"); // 此行必须
 

参数:
serverPage - 无默认值。ServerPage 属性的值是PageOffice的服务页面的URL。

这里的URL可以是相对于当前页面的相对地址,也可以是http开头的绝对地址。相对URL可以是相对于当前页面的地址,也可以是以"/"开头的相对于整个Web应用程序根的地址。

注意:如果URL采用http开头的绝对地址,您必须确保这个地址和当前页面同属于一个网站。

另请参见:
FileMakerCtrl.setTagId()方法中完整的示例代码,学习如何在线动态生成文档。

setSaveFilePage

public void setSaveFilePage(java.lang.String saveFilePage)
设置 FileMakerCtrl 控件的文档保存页面。

此属性是 FileMakerCtrl 控件的重要属性。SaveFilePage 页面用来接收 FileMakerCtrl 控件生成得到的文档。

如果 SaveFilePage 属性没有赋值,控件就不会提交生成的文档。 如果只是临时动态生成的文档,服务器端不需要存储此文档,而仅仅用来导出到用户本地磁盘,这时就无需给 SaveFilePage 赋值。

下面的示例展示如何使用 SaveFilePage 属性。

 fmCtrl1.setServerPage("poserver.do"); // 此行必须
 fmCtrl1.setSaveFilePage("savefile.jsp"); // 设置 savefile.jsp 用来保存文档。
 fmCtrl1.fillDocument("doc/test.doc", DocumentOpenType.Word);
 fmCtrl1.setTagId("FileMakerCtrl1"); // 此行必须
 

参数:
saveFilePage - 无默认值。SaveFilePage 属性的值是用来接收控件提交文档的服务器页面的URL。

这里的URL可以是相对于当前页面的相对地址,也可以是http开头的绝对地址。相对URL可以是相对于当前页面的地址,也可以是以"/"开头的相对于整个Web应用程序根的地址。

注意:如果URL采用http开头的绝对地址,您必须确保这个地址和当前页面同属于一个网站。

另请参见:
FileMakerCtrl.saveToFile()方法中完整的示例代码,学习如何编写 savefile.jsp 页面的代码。

setHTTPBasic_UserName

public void setHTTPBasic_UserName(java.lang.String value)
打开或保存文档时要求 HTTP Basic 验证的用户名。如果您的Web应用项目采用了 HTTP Basic 验证或Windows集成验证,您需要给 HTTPBasic_UserName 和 HTTPBasic_Password 属性赋值才能保证 FileMakerCtrl 控件成功保存生成的文档。


setHTTPBasic_Password

public void setHTTPBasic_Password(java.lang.String value)
打开或保存文档时要求 HTTP Basic 验证的用户密码。如果您的Web应用项目采用了 HTTP Basic 验证或Windows集成验证,您需要给 HTTPBasic_UserName 和 HTTPBasic_Password 属性赋值才能保证 FileMakerCtrl 控件成功保存生成的文档。


setJsFunction_AfterDocumentOpened

public void setJsFunction_AfterDocumentOpened(java.lang.String value)
定义一个 JavaScript 函数响应 AfterDocumentOpened 事件。

文档打开之后在页面里触发此事件。 如果您需要响应此事件,您需要在当前 JSP 页面里定义一个 JavaScript 函数。

下面的示例展示如何使用 JsFunction_AfterDocumentOpened 属性。

 fmCtrl1.setJsFunction_AfterDocumentOpened("AfterDocumentOpened()");
 

然后在当前 JSP 页面里定义 AfterDocumentOpened() 函数。

 <script language="javascript" type="text/javascript">
     function AfterDocumentOpened() {
         // 添加您的代码。
     }
 </script>
 


setJsFunction_OnProgressComplete

public void setJsFunction_OnProgressComplete(java.lang.String value)
定义一个 JavaScript 函数响应 OnProgressComplete 事件。

文档生成之后在页面里触发此事件。如果您需要响应此事件,您需要在当前 JSP 页面里定义一个 JavaScript 函数。

下面的示例展示如何使用 JsFunction_OnProgressComplete 属性。

 fmCtrl1.setJsFunction_OnProgressComplete("OnProgressComplete()");
 

然后在当前 JSP 页面里定义 OnProgressComplete() 函数。

 <script language="javascript" type="text/javascript">
     function OnProgressComplete() {
         // 添加您的代码。
     }
 </script>
 


setOfficeVendor

public void setOfficeVendor(OfficeVendorType value)
设置Office办公软件类型。目前支持的Office办公软件有:Microsoft Office和金山WPS。

参数:
value - 默认值是OfficeVendorType.MSOffice。

setWriter

public void setWriter(java.lang.Object writerObj)
               throws java.lang.Exception,
                      java.io.IOException
设置 FileMakerCtrl 控件的数据对象。

如果您需要动态输出数据到Word文档或Excel表格里,您必须创建com.zhuozhengsoft.pageoffice.wordwriter.WordDocument对象或com.zhuozhengsoft.pageoffice.excelwriter.Workbook对象,并且调用setWriter给FileMakerCtrl控件设置数据对象。 您必须在调用 fillDocument 方法之前调用 setWriter 方法。

writerObj 参数类型必须和 fillDocument 方法打开的文档类型相匹配。 例如:如果 fillDocument 方法打开的是Word文档,writerObj 参数必须是 com.zhuozhengsoft.pageoffice.wordwriter.WordDocument 对象。

下面的示例展示如何使用 setWriter 方法。

Word 示例代码:

 WordDocument doc = new WordDocument();
 DataRegion dataRegion = doc.openDataRegion("name");
 dataRegion.setValue("张三");
 fmCtrl1.setWriter(doc); //数据对象是 com.zhuozhengsoft.pageoffice.wordwriter.WordDocument 对象。
 

Excel 示例代码:

 Workbook wb = new Workbook();
 Sheet sheetOrder = wb.openSheet("Order");
 sheetOrder.openCell("B5").setValue("张三");
 fmCtrl1.setWriter(wb);
 

参数:
writerObj - 数据源对象。目前合法的数据对象有 com.zhuozhengsoft.pageoffice.wordwriter.WordDocumentcom.zhuozhengsoft.pageoffice.excelwriter.Workbook.
抛出:
java.lang.Exception
java.io.IOException

fillDocument

public void fillDocument(java.lang.String documentURL,
                         DocumentOpenType documentType)
                  throws java.lang.Exception,
                         java.io.IOException
在线动态生成Office文档。

此方法用来直接在线生成Office文档,而无需在当前Web页面显示Office文档。

参数:
documentURL - 待打开文档的URL地址。

此文档既可以是来自Web服务器文件夹的文件,也可以是用服务器页面动态输出的文件二进制流。但是必须保证文档具有Office文件格式。

如果是网站文件夹内的文件,就使用URL;如果是网站文件夹外的文件,对于Windows平台可以直接使用磁盘文件路径,例如:"D:\\documents\\abc.doc"

PageOffice 支持很多Office文档格式,例如 *.doc,*.docx,*.xls,*.xlsx,*.ppt,*.pptx,*.xml and *.rtf 等。

这里的URL可以是相对于当前页面的相对地址,也可以是http开头的绝对地址。相对URL可以是相对于当前页面的地址,也可以是以"/"开头的相对于整个Web应用程序根的地址。

注意:如果URL采用http开头的绝对地址,您必须确保这个地址和当前页面同属于一个网站。

documentType - 待打开的文档类型。请确保 documentType 与要打开的Office文档的文件格式保持一致。
抛出:
java.lang.Exception
java.io.IOException
另请参见:
FileMakerCtrl.setTagId()方法中完整的示例代码,学习如何在线动态生成文档。

fillDocumentAs

public void fillDocumentAs(java.lang.String documentURL,
                           DocumentOpenType documentType,
                           java.lang.String destFileName)
                    throws java.lang.Exception,
                           java.io.IOException
在线动态生成Office文档。

此方法用来直接在线生成Office文档,而无需在当前Web页面显示Office文档。

参数:
documentURL - 待打开文档的URL地址。

此文档既可以是来自Web服务器文件夹的文件,也可以是用服务器页面动态输出的文件二进制流。但是必须保证文档具有Office文件格式。

如果是网站文件夹内的文件,就使用URL;如果是网站文件夹外的文件,对于Windows平台可以直接使用磁盘文件路径,例如:"D:\\documents\\abc.doc"

PageOffice 支持很多Office文档格式,例如 *.doc,*.docx,*.xls,*.xlsx,*.ppt,*.pptx,*.xml and *.rtf 等。

这里的URL可以是相对于当前页面的相对地址,也可以是http开头的绝对地址。相对URL可以是相对于当前页面的地址,也可以是以"/"开头的相对于整个Web应用程序根的地址。

注意:如果URL采用http开头的绝对地址,您必须确保这个地址和当前页面同属于一个网站。

documentType - 待打开的文档类型。请确保 documentType 与要打开的Office文档的文件格式保持一致。
destFileName - 目标文件名。当开发者需要给新生成的文档指定文件名时,使用此参数。如果不需要新文件名,就直接调用fillDocument()方法。
抛出:
java.lang.Exception
java.io.IOException
另请参见:
FileMakerCtrl.setTagId()方法中完整的示例代码,学习如何在线动态生成文档。

fillDocumentAsPDF

public void fillDocumentAsPDF(java.lang.String documentURL,
                              DocumentOpenType documentType,
                              java.lang.String destFileName)
                       throws java.lang.Exception,
                              java.io.IOException
在线动态生成PDF文档。

此方法用来直接在线生成PDF文档,而无需在当前Web页面显示Office或PDF文档。

注意:此方法的待打开文档是Office文件,而不是PDF文件。此方法首先打开Office文件,然后进行动态数据填充等操作,最后生成PDF文档。要使用此功能,推荐安装Office2007及以上版本的Office软件。

参数:
documentURL - 待打开Office文档的URL地址。

此文档既可以是来自Web服务器文件夹的文件,也可以是用服务器页面动态输出的文件二进制流。但是必须保证文档具有Office文件格式。

如果是网站文件夹内的文件,就使用URL;如果是网站文件夹外的文件,对于Windows平台可以直接使用磁盘文件路径,例如:"D:\\documents\\abc.doc"

PageOffice 支持很多Office文档格式,例如 *.doc,*.docx,*.xls,*.xlsx,*.ppt,*.pptx,*.xml and *.rtf 等。

这里的URL可以是相对于当前页面的相对地址,也可以是http开头的绝对地址。相对URL可以是相对于当前页面的地址,也可以是以"/"开头的相对于整个Web应用程序根的地址。

注意:如果URL采用http开头的绝对地址,您必须确保这个地址和当前页面同属于一个网站。

documentType - 待打开的文档类型。请确保 documentType 与要打开的Office文档的文件格式保持一致。
destFileName - 目标文件名。开发者需要给新生成的PDF文档指定文件名。
抛出:
java.lang.Exception
java.io.IOException
另请参见:
FileMakerCtrl.setTagId()方法中完整的示例代码,学习如何在线动态生成文档。

createDocumentAs

public void createDocumentAs(DocumentVersion docVersion,
                             java.lang.String destFileName)
                      throws java.lang.Exception,
                             java.io.IOException
创建一个新文档并动态填充生成Office文档。

此方法用来直接在线生成Office文档,而无需在当前Web页面显示Office文档。

如果您需要创建从空白文档开始动态生成所有文档内容,就调用 createDocumentAs 方法。

在Web服务器上创建新文档和在客户机本地创建新文档有很大的不同。在Web服务器上创建新文档必须考虑到所有客户机上安装的不同版本的Office软件的兼容性。 为了保证新文档能够在所有客户机上都能顺利打开,您在调用 createDocumentAs 方法时需要选择较低的 DocumentVersion

参数:
docVersion - 文档类型及文档格式版本。
destFileName - 目标文件名。生成得到的文档的文件名。
抛出:
java.lang.Exception
java.io.IOException
另请参见:
FileMakerCtrl.setTagId()方法中完整的示例代码,学习如何在线动态生成文档。

createDocumentAsPDF

public void createDocumentAsPDF(DocumentOpenType documentType,
                                java.lang.String destFileName)
                         throws java.lang.Exception,
                                java.io.IOException
创建一个新文档并动态填充生成PDF文档。

此方法用来直接在线生成PDF文档,而无需在当前Web页面显示Office或PDF文档。

如果您需要创建从空白Office文档开始动态生成所有文档内容并且最后生成PDF格式文档,就调用 createDocumentAsPDF 方法。

在Web服务器上创建新文档和在客户机本地创建新文档有很大的不同。在Web服务器上创建新文档必须考虑到所有客户机上安装的不同版本的Office软件的兼容性。 为了保证新文档能够在所有客户机上都能顺利打开,您在调用 createDocumentAsPDF 方法时需要选择较低的 DocumentVersion

参数:
documentType - 待创建的文档类型。
destFileName - 目标文件名。开发者需要给新生成的PDF文档指定文件名。
抛出:
java.lang.Exception
java.io.IOException
另请参见:
FileMakerCtrl.setTagId()方法中完整的示例代码,学习如何在线动态生成文档。