基于Web的报表动态打印插件比较与应用

2017-07-18 12:02:55胡阳张莹杜笑宇王熙诚陈钊
现代计算机 2017年16期
关键词:插件调用报表

胡阳,张莹,杜笑宇,王熙诚,陈钊

(北京林业大学信息学院,北京 100083)

基于Web的报表动态打印插件比较与应用

胡阳,张莹,杜笑宇,王熙诚,陈钊

(北京林业大学信息学院,北京 100083)

随着网络的不断发展,人们对于网页的应用越来越广泛,在线打印成为了网页中必不可少的功能。分析比较国内外已有的主流插件的特点和区别,介绍基于Web环境下森林抚育样地系统中报表打印的方法,完整地介绍森林抚育样地系统所使用的Word在线编辑插件的特点,讨论如何在系统中恰当的嵌入Word在线编辑插件,使其能够实现系统中报表的在线修改和打印功能。

森林抚育样地信息;在线修改;DSOFramer;动态报表打印;PHPWord

0 引言

随着Web技术的不断发展,用户对于网页在线功能的需求越来越大,在网页上实现用户对于打印表格的在线修改和打印成为了提高用户体验的一个十分重要的模块。森林抚育成效监测是制定科学合理抚育措施的重要基础。已有的基于Web的森林抚育样地信息系统,能够完成样地信息导入、样地信息显示以及样地信息打印和导出的功能。其中样地基本信息及统计信息大多都需要以报表的格式所展示和打印。其中样地基本信息及统计信息大多都需要以报表的格式所展示和打印。系统可以固定格式的PDF表格在网页上给用户展现并打印,但不能根据需要在线调整表格的格式和增减数据项,因此还不能满足用户动态调整打印表格的需求。

由于系统中对调查数据的使用存在动态组合的特点(如样地每木检尺、树高曲线、草本植物调查、土壤剖面调查等),这些调查监测数据在报表打印时很可能由于实际需要做出相应的修改。而对于基于Web的信息系统,若没有打印报表的在线编辑功能,则需要管理员通过后台代码来实现对于表格和数据的维护和修改,过程十分繁琐,有很大的局限性,从而降低了用户对系统使用体验。用户只能打印系统中已写入的数据的固定格式的表格,不能及时修改变动的表格格式和数据项。为了方便用户在对报表打印时对于数据的增加、删除、修改操作以及报表格式的灵活修改,本文设计了该系统中使用Word在线编辑插件的方法,并编程实现了动态打印的功能。

1 插件研究现状对比分析

1.1 文档在线编辑插件的主要功能

随着Web的开发技术不断发展,基于JavaScript 的jQuery等框架技术也得到了很好的发展,为Web应用提供了强大功能技术支持,原本由桌面编辑工具完成的样式排版、文字编辑、图表打印等功能,如今在Web中也可实现。而这些功能仅由浏览器提供的客户端编辑控件是无法满足需要的,因此基于浏览器的在线文本编辑器插件也就相应而生了。当前Web应用系统中的在线文档编辑器主要完成如下功能:(1)文本格式化与排版(2)多媒体对象的插入(3)HTML元素对象的插入。同时配合一些文档编辑辅助功能,如预览、查看源代码、保存、打印等,从而使得在线文本编辑能够完成几乎所有互联网信息的编辑与发布功能[1]。

1.2 不同在线浏览插件间对比分析

目前,已经产生出了很多可以实现文档在线编辑风格和特点的插件,其特点不一,有些可以在线读写和编辑,有些可以实现更强大的功能,包括支持不同的操作系统、可以对报表内容进行不同样式的修改等,主要有以下几个代表性的主流插件,分别为Jacob、Apache POI和JXL,其各自特点如表1所示:

表1 不同插件间对比分析

对比分析可得,Jacob可看作是Java-COM的一个桥梁,通过这个COM桥梁来操作COM组件,最终可以完成对Office文档的操作。Jacob的缺点在于所支持的操作系统具有很大局限性,插件只能用于Windows系统中,受到了服务器操作系统的限制,并且其CPU占用较高,不能提交Word/Excel用户输入,数据生成速度较其他几者来说慢很多。

Apache POI是一个开源的Java读写Excel、Word等微软OLE2组件文档的项目,POI的特点之一是能够修饰单元格属性,与Jacob相比的优势在于不受操作系统的局限性,且无需在本地安装Office,对于Word、Excel、PPT格式的文档可用其不同结构进行读写功能,对于Visio、Publisher、Outlook格式的文档可进行读的功能,其缺点是技术不够不成熟,代码不能跨平台使用,需要先解析Word,然后自己复写成HTML,并且很难保证转换的HTML内容的格式与原来Word文档格式一致。

JXL与POI有些相似,插件的优点是支持Excel的所有版本,无需在本地安装Office,能够修饰单元格属性,支持图像和图表,并且对于中文的支持非常好,跨平台使用的阻碍小。这套API是纯Java的,并不依赖Windows系统,所以运行在Linux环境下,它同样能够正确地处理Excel文件。JXL的缺点是效率低,图形和图表的支持很有限,而且仅仅识别PNG格式,对格式的支持不如POI强大。

除上述提到的插件以外,现在还产生了很多功能更加强大的HTML在线文档编辑器,如WebHtmlEditor,可以支持更多主流浏览器,如Firefox 1.0+,Mozilla 1.3+,Netscape 7+和Safari等,不再受浏览器版本的限制,能够实现多语言支持,可以根据用户的系统自动选择相应的语言。另外还有eWebEditor在线编辑器,对Word/Excel的导入支持更加强大,可以一键完成把Word/Excel文档的内容导入到编辑器中,文档中的图片、图表等文件将自动上传到服务器中,并提供了完善的接口,满足更高级用户的需要。

好的编辑器常常具备以下功能特点:一是具有完整的帮助文档,更新及时;二是支持多种定义方式,所见即所得,使用灵活方便;三是体积小巧、界面风格漂亮,功能完整,代码性能高[2]。在森林抚育样地系统中所使用的Dsoframer插件是微软提供的一个基于C语言实现的、开源的ActiveX组件,其为Excel、Word、PPT 等Office程序提供了嵌入到其他支持OLE技术的程序和系统中的能力。Dsoframer是一个网上免费提供的ActiveX控件,它提供了一系列的接口函数,可以实现打开Web服务器上的远程Word文件,对其进行本地操作,并将修改后的Word文件保存到服务器上[3]。Dsoframer不受插件调用语言的限制,对于Office有很好的兼容性,有着十分快速的数据生成速度,可以提交Word/Excel的用户输入,不受操作系统的局限性。

1.3 WWoorrdd调用插件对比分析

后台使用Word调用插件可生成和导出Word文档,再利用在线浏览插件可将不同的Word文档显示在HTML中。目前,使用PHP生成Word文档主要有两种思路,分别为利用Windows系统提供的COM组件及利用PHP将内容写入doc/docx文件中。以下为对使用COM组件及使用PHPWord库调用Word的原理及功能对比分析。

PHP可以通过COM类调用组件对Word文档进行操作。COM如同开发动态的、面向对象的API,主要的任务就是自动建立连接、传输数据信息并返回来自远程组件的答复。使用COM组件可对Word模板进行书签替换,所采取的具体步骤如下:从后台模板数据库中读取对应Word模板,调用ActiveDocument-〉Bookmarks对模板中的书签进行遍历,获取书签的位置和取书签的名称,识别书签的不同名称提取数据库中数据并插入到对应的位置中,生成已填入数据的Word文档。在尝试过程中发现,调用COM组件进行模板替换时程序运行较慢,并且在替换中文字符串时容易出现乱码情况。

PHP也可以通过调用PHPWord库中函数对Word文档进行操作。PHPWord库包含了文本元素、列表元素、超链接、图像、标题、目录、表格等的添加及其样式添加。通过调用其函数还能实现页眉、页脚的添加及分页符的插入,具体可参考PHPWord开发者指南。总体来说,通过调用PHPWord库内函数可实现Word文档的基本编写。通过调用其Template函数能识别模板标签并进行字符串替换。模板中标签格式为${value},实现替换的具体代码如下:

2 模板设计及技术分析

2.1 系统需求

森林抚育样地系统中所涉及到的样地信息打印包含了多级用户,打印内容涉及样地位置调查记录、样地因子现地调查记录、样地每木检尺表、树高曲线图、灌木幼树调查表、草本植物调查表、土壤剖面调查表、森林涵养水源调查表、森林保持水土调查表等,打印的内容均以报表的形式展现出来。如果按照以往的情况直接选择打印,报表中的数据信息、格式、字体样式、排版等都按照固定格式打印,用户不能做出相应修改。而对于调查记录或是监测结果来说,往往需要对表格格式和数据项做出修改,来应对调查数据不同信息组合的需要。该系统中现有的打印功能只能按照页面中所显示的内容直接进行打印,如果需要进行格式修改,则需要系统管理员从后台进行调整,十分繁琐。

由此可见,该系统需要嵌入一个文档在线编辑的功能,根据报表格式和数据需求做出相应的Word模板,当用户在打印前需要对报表格式做出修改和对数据项进行增减时,系统调出对应的模板,用户对需要修改和调整的数据项、格式等进行相应的操作,然后将修改结果进行保存。有了这样一个文档在线修改的功能后,用户可根据自己对于报表的需求进行在线定制打印,提高了系统打印的便捷性和实用性。

2.2 问题分析及解决

(1)Web页面浏览分析与实现

Dsoframer是基于客户端的ActiveX控件。ActiveX技术是以COM为基础建立起来的,与具体的编程语言无关。COM的组件标准相对来说是比较开放的,其扩充力和扩展能力较高。COM规范主要有COM核心、结构化存储、统一数据传输和COM库等[4]。采用ActiveX技术,可以实现传统报表打印的很多功能,例如对于报表的分页、样式调整等。Dsoframer的功能是将Office文档嵌入到浏览器中,并调用Office中的各种接口,来完成文档的编辑工作,使用控件的HTTP接口模拟表单提交和发送到数据处理页面,完成文档的存档工作。

在前端,我们制作Word在线打开的模板,页面上的按钮根据不同的页面定制打印需求,设有保存、上传服务器等相关功能,分别调用Dsoframer的不同函数,对路径和效果进行相关修改。在线显示的Word内容则是根据用户在网页中选择的不同表或者模板,用JS写进了后台的PHP文件中进行调用,JS中运用函数setTimeout,根据点击对象的id进行模拟点击,对IE浏览器和其他浏览器的点击方式进行区分。用户选择不同的表或模板时,前台将PHP语句嵌入到HTML中,返回id,打开不同的Word。用户对表或模板进行修改后,可以保存并上传至服务器,下次打开则默认为用户更改过的版本,每位用户在线使用自己的定制Word。也可选择原始版本打开。

(2)文档动态生成设计与实现

在解决如何将数据从数据库调用并正确插入到模板文档中,即文档数据动态生成这个问题时,尝试了两种方法,一个是使用COM组件进行书签替换,另一个是使用PHPWord库内函数进行字符串替换。在尝试使用COM组件的过程中,发现了在报表中插入中文时,尾部会出现乱码,导致显示错误的问题。而用PHPWord可解决中文出现乱码的问题,修改方式为编辑PHPWord/Template.PHP文件,找到代码$replace= utf8_encode($replace);,删除或者替换为$replace=iconv ('gbk','utf-8',$replace);,用此方式可以解决模板不支持中文的问题,提供良好的兼容性。

调用PHPWord库中Template函数进行模板标签替换时,容易出现模板标签替换失败的现象。这是由于该函数替换规则先是将Word文件解析成XML再进行替换处理,而手动输入的标签会在解析成XML时出现字符分离,导致匹配不上模板标签。解决方法为将.docx类型模板文档更改为.zip类型文件并直接修改其Word文件夹下的document.xml文件,也可以尝试对Template类进行改进。

3 结语

本文从森林样地抚育信息系统打印的需求出发,从模板实现、功能描述等方面介绍了基于Web的在线动态打印技术。由于森林样地抚育系统有着植物种类繁多、数据量大的特点,因此对报表的在线、实时修改显得十分重要。实现Word模板在线修改功能后,系统用户在可修改的权限内,对于所要修改的表格格式和数据项可进行自行在线修改,无需再调用后台操作,节省了大量时间和精力,表格修改的及时性可以得到大大提升。以往的系统打印功能,通常受到文件PDF格式无法做出调整的限制,用户只能按照原格式进行打印,无法做出修改。而使用Word在线打印,用户可根据打印的需求自行调整表格中字体的格式、大小等,满足各类打印要求。除此之外,本文对比分析了各在线打印插件间的优缺点以及各自的特点,得出了当前网络技术中对于在线打印技术的实际应用情况以及可以吸取的优点和需要避免的缺点,并以此为依据对该森林样地抚育信息系统的Word在线打印功能进行调试。

[1]钟志宏.基于HTML的在线文档编辑器的实现方法[J].数字技术与应用,2012(05):215-217.

[2]廖非凡.Web编辑器中Word导入插件的实现[J].电脑编程技巧与维护,2014(05):88-90.

[3]田亚丽.基于C#和DSOFramer实现文件在线拟稿和痕迹保留[J].昆明冶金高等专科学校学报,2010(05):32-35.

[4]董梦妍.组件技术在软件开发中的应用[J].智能城市,2016(04):5-6.

Comparison and Application of Web-Based Dynamic Reporting Print Plug-in

HU Yang,ZHANG Ying,DU Xiao-yu,WANG Xi-cheng,CHEN Zhao

(School of Information Science and Technology,Beijing Forestry University,Beijing 100083)

With the continuous development of the network,the application of Web pages is more and more extensive.Online printing has become an indispensable feature in the Web page.Analyzes and compares the characteristics and differences of the existing mainstream plug-ins domestic and aboard,and introduces the method of report printing in the forest-based tending system based on the Web environment.Introduces the features of Word Online Editing Plug-in,discusses how to embed Word online editing plug-in in the system appropriately,so that it can achieve the online changing and printing function.

胡阳(1995-),女,北京人,本科,研究方向为信息管理与信息系统

张莹(1996-),女,湖南郴州人,本科,研究方向为信息管理与信息系统

杜笑宇(1996-),女,北京人,本科,研究方向为信息管理与信息系统

王熙诚(1996-),男,江西南昌人,本科,研究方向为信息管理与信息系统

陈钊(1970-),男,甘肃天水人,博士,教授,研究方向为信息系统建模、主动信息服务、林业信息化

2017-03-21

2017-05-26

1007-1423(2017)16-0041-04

10.3969/j.issn.1007-1423.2017.16.010

Information of Forest-based Tending System;Online Editing;Dsoframer;Dynamic Report Printing;PHPword

猜你喜欢
插件调用报表
自编插件完善App Inventor与乐高机器人通信
电子制作(2019年22期)2020-01-14 03:16:34
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
测控技术(2018年5期)2018-12-09 09:04:46
LabWindows/CVI中Excel报表技术研究
测控技术(2018年8期)2018-11-25 07:42:28
从三大报表读懂养猪人的成绩单
基于系统调用的恶意软件检测技术研究
MapWindowGIS插件机制及应用
基于Revit MEP的插件制作探讨
利用RFC技术实现SAP系统接口通信
月度报表
中国纺织(2009年7期)2009-08-07 06:56:16