1、功能介绍

         PageOffice的一键套红功能是用来实现在线编辑时能方便、快捷、简单地对Word文档进行套红操作。

在线编辑Word文档时,有时需要对Word文档进行套红设置,如有些政府文件、公司内部颁发的文件等等,使用红头模板对文档正文套红时,并不是简单的把文档正文插入模板中标记的正文位置就算完成了,模板中往往还有很多的位置需要填写具体的数据,比如:发文号、发文单位、主题词、打印份数等等。一般来说,这些数据已经在起草文件时,在页面表单中填写过一次,如果套红之后还需要用户在Word文件中重新填写,一是增加了用户的工作量,二是可能出现两次填写数据不一致的错误。若是这些文件使用的非常频繁,而每次都要通过手动的一个个添加套红并设置格式,这将非常的繁琐和麻烦。

而通过PageOffice的一键套红功能,则使得对Word文件进行的套红的操作将变得非常简单而容易。

PageOffice的一键套红功能需先将用到的套红样式结合书签使用做成Word模版。也就是在Word模版中先设置好套红样式,然后在需要通过程序填充数据的位置(如发文号、发文单位、发文时间等等)插入书签。

一般的开发人员使用Word比较少,可能不清楚Word书签是怎样插入的,下面简单的介绍一下插入书签的方法。

第一种方法:把光标定位到需要标记数据位置的地方,点Word菜单中的“插入”-“书签”,就会弹出一个标题为“书签”的对话框(如下图所示),输入新书签的名称,注意:书签名必须以字母、汉字、中文标点等开头,可以包含数字但中间不能有空格(用PageOffice开发的时候不推荐使用中文命名书签名)。点右侧的“添加”按钮,新的书签名将出现在下面的列表中。

第二种方法:选择几个文字、或一段文字、或者选择一段包含表格和图片的内容,为选中的内容指定书签的对象,然后执行第一种方法的同样操作,“插入”→“书签”……

注意:如果新插入位置或新对象采用的是已有的书签名,原有的书签将自动取消。

PageOffice示例代码中的模板在制作的时候,多采用第二中方法定义书签,插入书签之前会先写一个标示性的词语用中括号括起来,比如:[姓名],然后选中“[姓名]”,再插入书签。这样做的目的是便于在查看或编辑模板数据位置的时候一目了然。

在使用PageOffice开发的过程中,为了避免出现与用户自己定义的书签出现冲突,要求插入的书签名称必须以“PO_”开头。注意是字母o,不是数字0。

在PageOffice的概念里提到的数据区域,本质上就是书签,但是只有“PO_”(或者小写的“po_”)开头的书签才叫数据区域,请大家注意这点。

编辑好Word模版后,可先通过PageOffice控件类实现在线加载显示正文的Word文档,然后选择要添加的套红模版,之后结合数据区域(DataRegion),通过程序将正文内容、发文号、发文单位、发文时间等等赋值到数据区域中,就可在线显示添加套红后的Word文档了。

什么是数据区域?数据区域是Word文档中具有 "PO_" 前缀命名的书签所定位的文档区域。简单来说,数据区域就是一种特殊的Word书签对象,便于定位Word文档中的内容。数据区域是PageOffice开发平台中重要的技术概念。

这里举个简单的例子说明什么是数据区域:假设开发者需要在待打开的Word文档指定位置处显示产品名称,就可以先手动打开此Word文档,在指定位置处插入书签"PO_ProductName",保存文档。这样数据区域"ProductName"就定义好了。编写代码 doc.OpenDataRegion("ProductName").Value ="PageOffice"; 即可在此数据区域处生成想要的内容。

数据区域的填充及数据区域格式的控制都是通过DataRegion类实现的,很多Word操作都需要调用DataRegion类完成。DataRegion类能通过调用 OpenDataRegion(String) 方法或CreateDataRegion(String, DataRegionInsertType, String) 方法获得 DataRegion 对象。

二、一键套红的具体使用

         PageOffice一键套红的使用方法简单地说就是通过程序先拷贝一份所想要的套红模板文件作为正式文件,然后再在线打开该正式文件,并且将文件的正文、发文日期、发文编号、发文人等等信息通过数据区域动态填充到正式文件中,即实现了一键套红,获得了添加了套红的正式的发文文件。

PageOffice一键套红具体实现时只需要将PageOfficeCtrl控件类结合WordDocument类和DataRegion类使用即可实现。具体实现步骤如下:

①,通过调用PageOfficeCtrl控件类的WebOpen()方法在线打开和显示存储文件正文的Word文档: PageOfficeCtrl1.WebOpen("doc/" + fileName, PageOffice.OpenModeType.docNormalEdit, "张三");

这一步不是必须的,也可在设置程序时自行设计跳过这一步,直接进行下一步。

②,选择想要的套红模板,通过程序拷贝该模板文件,将拷贝后的文件作为正式文件。

③,在调用WebOpen()方法打开Word文件之前通过DataRegion类将文件的正文、发文人、发文号、发文时间等数据赋值到相应的数据区域中,如:

WordDocument doc = new WordDocument();

DataRegion sTextS =doc.OpenDataRegion("PO_STextS");// 打开数据区域

sTextS.Value = "[word]doc/test.doc[/word]";//把正文文件插入到正式文件中

DataRegion copies =doc.OpenDataRegion("PO_Copies");

copies.Value = "6";

数据区域值的类型可以是文本类型、Word文件类型、Excel文件类型、Image图片类型等。一般将Word、Excel、图片类型的值赋值给数据区域时,写法为:“[word]word文件路径[/word]”、“[excel]excel文件路径[/excel]”、“[image]image图片路径[/image]”。但须注意的是PageOffice标准版只支持文本类型,专业版只支持文本、图片和Word文件类型,企业版文本、Word文件、Excel文件、Image图片类型都支持。使用时请一定要注意。

数据区域的具体使用方法请参见相应开发语言的开发帮助和开发示例包中的示例。

④,调用WebOpen()方法打开已经填充了数据区域的正式文件,即为添加套红后的正式发文文件。

另外,如果要保存套红后的正式发文文件,还可以通过设置PageOfficeCtrl类对象的“SaveFilePage”属性的值来设置保存页面。在保存页面中借助FileSaver类的SaveToFile(绝对路径及文件名)方法,实现保存一键套红后的正式发文文件。

         PageOffice一键套红的部分实现代码为:

         //Java实现代码

         // 复制模板,命名为正式发文的文件名:zhengshi.doc

fileName = "zhengshi.doc";

String templateName = request.getParameter("mb");// 获取选择的模版文件名称

String templatePath = getServletContext().getRealPath("TaoHong/doc/" + templateName);

String filePath = getServletContext().getRealPath("TaoHong/doc/" + fileName);

copyFile(templatePath, filePath);//复制模板文件

......

PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);

poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); //此行必须

poCtrl1.setSaveFilePage("savefile.jsp");//设置保存页面

... ...

// 填充数据和正文内容到“zhengshi.doc”

WordDocument doc = new WordDocument();

DataRegion copies = doc.openDataRegion("PO_Copies");

copies.setValue("6");

DataRegion issueDept = doc.openDataRegion("PO_IssueDept");

issueDept.setValue("开发部");

DataRegion sTextS = doc.openDataRegion("PO_STextS");

sTextS.setValue("[word]doc/test.doc[/word]"); // 填充正文到数据区域

DataRegion sTitle = doc.openDataRegion("PO_sTitle");

sTitle.setValue("北京某公司文件");

DataRegion topicWords = doc.openDataRegion("PO_TopicWords");

topicWords.setValue("Pageoffice、套红");

... ...

poCtrl1.setWriter(doc); // 不要忘记此行

... ...

poCtrl1.webOpen("doc/" + fileName, OpenModeType.docNormalEdit, "张三");//打开Word文件

poCtrl1.setTagId("PageOfficeCtrl1"); //此行必须

//C#实现代码

// 打开word文件

private voidOpenWord(string fileName)

{

//*************卓正PageOffice组件的使用***************

Session.Add("fileName",fileName);//保存word文件名称

PageOfficeCtrl1.SaveFilePage = "Savefile.aspx";//设置保存页面

PageOfficeCtrl1.WebOpen("doc/"+ fileName, PageOffice.OpenModeType.docNormalEdit,"张三");//打开Word文件

}

......

// 套红

protected voidBtnTaoHong_Click(object sender, EventArgs e)

{

//套红模板时,复制模板文件为“正式发文文件”(zhengshi.doc),填充数据和“正文文件”到“正式发文文件”

//复制模板,命名为正式发文的文件名:zhengshi.doc

string fileName = "zhengshi.doc";

mb = Request.Form["templateName"];

System.IO.File.Copy(Server.MapPath("doc/" + mb),

Server.MapPath("doc/" + fileName), true);//拷贝文件

//给正式发文的文件填充数据

WordDocument doc = new WordDocument();

DataRegion copies =doc.OpenDataRegion("PO_Copies");

copies.Value = "6";

DataRegion sTextS =doc.OpenDataRegion("PO_STextS");

sTextS.Value = "[word]doc/test.doc[/word]";// 把正文文件插入到正式文件中

DataRegion sTitle =doc.OpenDataRegion("PO_sTitle");

sTitle.Value = "北京某公司文件";

DataRegion topicWords =doc.OpenDataRegion("PO_TopicWords");

topicWords.Value = "Pageoffice、套红";

... ...

PageOfficeCtrl1.SetWriter(doc); //不要忘记此行

//打开word文件

OpenWord(fileName);

}

... ...

以上示例的完整代码,请参考相应开发语言的Samples示例包中综合演示中的第9个示例:“使用PageOffice实现模板套红(专业版、企业版)”。

PageOffice 对Word文档的一键套红功能相关推荐

  1. 使用poi操作word文档实现套打功能

    使用poi操作word文档实现套打功能 本文目的是为了分享一个实现套打功能,但是不同于简单的word的文本替换而是采用poi对word的文本框就行操作实现的功能: poi中各种jar的说明 套打的实现 ...

  2. Word文档转PDF的功能

    最近项目中有用到Word文档转PDF的功能,做了一些尝试,也遇到了一些困难.  下面把尝试的情况记录下来,也希望做过类似工作的童鞋能一起探讨一下.  http://www.iteye.com/topi ...

  3. java实现Word 文档形式的导出功能

    关于在Java中实现导出功能,导出格式为Word文档导出,具体参考如下代码. 1 先准备好一个导出Word文档的模板. 例如: 将其存值地方用字段代替.例如: 2.打开doc文件后 ,文件中的另存为, ...

  4. 写一个VBA word宏,能够实现多个word文档替换文字的功能

    下面是一个示例代码,可以实现在多个 Word 文档中替换文字的功能: Sub ReplaceTextInMultipleDocs()Dim strOldText As String Dim strNe ...

  5. word文档中表格计算机功能在哪,电脑在Word文档中插入Excel图表不显示如何解决...

    电脑中都会有安装一个Word文档,我们可以编辑和整理文件,但是一位用户说做Word文档里,想插入EXCEL图表,但是显示出来的是一段代码,尝试很多次还是一样,怎么办呢?如果你还在为此问题困扰,那么可以 ...

  6. 怎么使用计算机求和,Word文档如何使用求和功能?Word文档使用求和教程

    Word是我们工作中经常使用的办公软件,有时候在Word文档中有很多数值.数据,需要我们进行求和.汇总,不过有些小伙伴并不知道Word中有求和功能,用着计算机算,那工作效率不能直视,那么该怎么使用Wo ...

  7. 基于Jfinal-Engine实现 word 文档的渲染导出功能,通过xml渲染后再转word

    大体思路: 1.使用Word制作出xml模板 2.然后使用JFinal的模板引擎渲染数据 3.拿到渲染后的xml,包装成word二进制数据 发送给前端下载保存即可 思路来源:https://jfina ...

  8. vue+blob,文件流转word文档并实现下载功能

    1.HTML中 <ul style="list-style: none;" ref="LDQZOne"><li v-for="(it ...

  9. pageoffice 骑缝章_JAVA调用PageOffice实现Word文档中加盖印章

    在某些OA系统开发中,某些客户可能会希望通过系统来实现签订某些电子文件或合同,而非还是必须通过纸质文件来实现.而电子签章就是为实现这一功能而出现的,电子签章能保证签订合同.协议的有效性和真实性,而如何 ...

最新文章

  1. 在ubuntu 14.04 64bit下配置安装PyQt4(python2.7和python3.4)
  2. ∇SLAM:自动可微分SLAM
  3. get这款工具,不会机器学习也能轻松搞定深度分析
  4. delphi中TStringGrid数据的导出
  5. mybatis plus 事务管理器_SpringBoot第七篇:springboot开启声明式事务
  6. webdrive不更新_关于selenium 用Webdrive打开Firefox不含有插件的问题(python)
  7. java调用cmd_Java调用CMD命令
  8. vision安装过程中出错_scrapy安装过程中之Twisted的安装遇到的坑
  9. NetCat瑞士军刀渗透工具使用详解
  10. MySQL版本升级5.6到5.7版本
  11. 指定JDK版本运行Tomcat
  12. 电脑html怎么连接投影仪,笔记本Win10电脑外接显示器(投影仪)的设置步骤
  13. html中a做成按钮,css如何将超链接a设计成按钮样式
  14. Kafak入门第三课:kafka数据格式及各版本占用的空间大小对比
  15. 企业管理软件如何选型?看完后恍然大悟
  16. bootstrapvalidator已定义的验证规则
  17. python 编程该看那些书籍_python编程入门书籍-零基础学习Python编程,这8本书必看!...
  18. [ISCC 2023] pwn部分
  19. 【网络间谍篇】剖析美国“棱镜门”事件
  20. EasyUI Treegrid 树形网格(官网没有提到的实现方式)

热门文章

  1. 0x80070422报错、0x6D9报错,无法开启防火墙解决办法(方法版)
  2. 谁说自学Python不行!精挑细选自写的100篇文章,让你自学路上不再迷茫!!
  3. 【ChatGPT与网络安全攻击】AI密码破解器可在60秒内攻破50%以上普通密码
  4. git的初始化+常见bug解决方案
  5. SQL Server标量值函数-汉字转拼音
  6. 零基础可以学软件开发吗?
  7. C++ 一维数组实现杨辉三角(Pascar Triangel)
  8. Python 字典 items()方法
  9. C#百度定位API使用
  10. 网络端口号的分类及查看