一种实现以PDF格式快速导出业务数据的方法及系统与流程

文档序号:11234051阅读:358来源:国知局
一种实现以PDF格式快速导出业务数据的方法及系统与流程

本发明涉及业务数据导出领域,特别涉及一种实现以pdf格式快速导出业务数据的方法及系统。



背景技术:

现在的工作环境中,需要交流、归档留存的电子文档一般多使用pdf格式,主要是由于pdf不容易被篡改,因此很多正式场合格式要求都要求pdf。比如很多商务交流材料、销售人员与用户谈妥的协议和签字盖章的文件打印等,一般多是pdf格式。一般企业的crm系统,特别是合同系统也会特别要求文档导出是pdf格式。通常使用java方式实现pdf文件导出和下载的功能,但一般逻辑比较复杂,并且学习的成本也比较高。



技术实现要素:

本发明所要解决的技术问题是针对现有技术的不足,提供一种实现以pdf格式快速导出业务数据的方法及系统,目的在于通过提供定义好的pdf模板类,使开发人员只要关注业务数据,完全不用关心pdf生成过程,便捷的完成业务数据以pdf格式快速导出的开发任务,提高开发效率,加快项目进度。

本发明解决上述技术问题的技术方案如下:

一种实现以pdf格式快速导出业务数据的方法,包括以下步骤:

s1,根据用户的查询条件向服务器端发送获取业务数据的请求;

s2,服务器端接收所述获取业务数据的请求,并根据请求中的查询条件获取所需的业务数据,调用预设的pdf模版类从预设的pdf模版库中选择所需的pdf模版,所述pdf模版包含与所述获取到的业务数据相对应的模版组件;

s3,初始化所述pdf模版,加载所述pdf模版中的模版组件,并解析所述业务数据得到与所述模板组件分别对应的信息数据,将所述分别对应的信息数据填充到对应的模版组件后将pdf模板生成pdf文件进行展示。

本发明的有益效果是:通过提供定义好的pdf模板类,使开发人员只要关注业务数据,完全不用关心pdf生成过程,便捷的完成业务数据以pdf格式快速导出的开发任务,提高开发效率,加快项目进度。

在上述技术方案的基础上,本发明还可以做如下改进:

进一步,所述s2中所述选择所需的pdf模版的过程为:根据所述获取到的业务数据中的所有数据流类型,从预设的pdf模版库中选择出包含与各数据流类型相对应的模版组件的pdf模版。

采用上述进一步方案的有益效果是:被选择出的pdf模版能满足业务数据的各种数据流展示,根据实际应用情况展示业务数据,实用性高,适用的业务范围广。

进一步,所述s2中所述模版组件包括:

基本格式定义组件,用于根据所述业务数据定义pdf模版的基本格式,所述基本格式包括页眉、页脚、表格格式、字体格式和总页数;

初始化设置组件,用于根据所述业务数据初始化设置pdf模版的基本格式;

文档布局组件,用于将所述s3中解析业务数据后获得的信息数据中的文档内容根据文档内容的数据量使用功能块或功能段落实现以pdf格式展示。

采用上述进一步方案的有益效果是:通过细分的模版组件来精确匹配业务数据中的各种数据流类型,展示效果好,满足各种业务数据的规范快速展示的需求。

进一步,所述s2中所述模版组件还包括水印组件,用于在所述生成的pdf文件中添加预设的水印信息。

采用上述进一步方案的有益效果是:可以给导出的pdf文档中添加水印信息,有助于满足宣传和保护版权的作用。

进一步,所述s2中所述所需的pdf模版为多个,每个pdf模版包括一个以上模版组件;

所述s3中还包括:将所述分别对应的信息数据填充到对应的模版组件后,调用预设的合并pdf类将填充信息数据后的多个pdf模版合并生成pdf文件进行展示。

采用上述进一步方案的有益效果是:所有pdf文档组成部分都可以复用单独的模板组件部分功能,开发时,只要了解各个组件部分的功能以及实现的模板,完成模板功能的组装,可以快速构建自己的业务功能实现。

为了解决上述技术问题,本发明还提出了一种实现以pdf格式快速导出业务数据的系统,包括以下模块:

用户交互模块,用于根据用户的查询条件向模版获取模块发送获取业务数据的请求;

模版获取模块,用于接收所述获取业务数据的请求,并根据请求中的查询条件获取所需的业务数据,调用预设的pdf模版类从预设的pdf模版库中选择所需的pdf模版,所述pdf模版包含与所述获取到的业务数据相对应的模版组件;

pdf生成模块,用于初始化所述pdf模版,加载所述pdf模版中的模版组件,并解析所述业务数据得到与所述模板组件分别对应的信息数据,将所述分别对应的信息数据填充到对应的模版组件后将pdf模版生成pdf文件并发送给用户交互模块进行展示。

本发明的有益效果是:通过提供定义好的pdf模板类,使开发人员只要关注业务数据,完全不用关心pdf生成过程,便捷的完成业务数据以pdf格式快速导出的开发任务,提高开发效率,加快项目进度。

在上述技术方案的基础上,本发明还可以做如下改进:

进一步,所述模版获取模块还用于根据所述获取到的业务数据中的所有数据流类型,从预设的pdf模版库中选择出包含与各数据流类型相对应的模版组件的pdf模版。

采用上述进一步方案的有益效果是:被选择出的pdf模版能满足业务数据的各种数据流展示,根据实际应用情况展示业务数据,实用性高,适用的业务范围广。

进一步,所述模版获取模块中所述模版组件包括:

基本格式定义组件,用于根据所述业务数据定义pdf模版的基本格式,所述基本格式包括页眉、页脚、表格格式、字体格式和总页数;

初始化设置组件,用于根据所述业务数据初始化设置pdf模版的基本格式;

文档布局组件,用于将所述pdf生成模块中解析业务数据后获得的信息数据中的文档内容根据文档内容的数据量使用功能块或功能段落实现以pdf格式展示。

采用上述进一步方案的有益效果是:通过细分的模版组件来精确匹配业务数据中的各种数据流类型,展示效果好,满足各种业务数据的规范快速展示的需求。

进一步,所述模版获取模块中所述模版组件还包括水印组件,用于在所述生成的pdf文件中添加预设的水印信息。

采用上述进一步方案的有益效果是:可以给导出的pdf文档中添加水印信息,有助于满足宣传和保护版权的作用。

进一步,所述模版获取模块中所述所需的pdf模版为多个,每个pdf模版包括一个以上模版组件;

所述pdf生成模块还用于将所述分别对应的信息数据填充到对应的模版组件后,调用预设的合并pdf类将填充信息数据后的多个pdf模版合并生成pdf文件并发送给用户交互模块进行展示。

采用上述进一步方案的有益效果是:所有pdf文档组成部分都可以复用单独的模板组件部分功能,开发时,只要了解各个组件部分的功能以及实现的模板,完成模板功能的组装,可以快速构建自己的业务功能实现。

附图说明

图1为本发明实施例1中一种实现以pdf格式快速导出业务数据的方法的流程图;

图2为本发明实施例2中一种实现以pdf格式快速导出业务数据的系统的结构框图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

实施例1

如图1所示,一种实现以pdf格式快速导出业务数据的方法,包括以下步骤:

s1,根据用户的查询条件向服务器端发送获取业务数据的请求;

s2,服务器端接收所述获取业务数据的请求,并根据请求中的查询条件获取所需的业务数据,调用预设的pdf模版类从预设的pdf模版库中选择所需的pdf模版,所述pdf模版包含与所述获取到的业务数据相对应的模版组件;

s3,初始化所述pdf模版,加载所述pdf模版中的模版组件,并解析所述业务数据得到与所述模板组件分别对应的信息数据,将所述分别对应的信息数据填充到对应的模版组件后将pdf模版生成pdf文件进行展示。

具体的,本发明可以采用itext包(itext是java中用于创建和操作pdf文件的开源库)来完成pdf文件的生成和导出,框架采用:spring4(spring是一个开源框架,spring是于2003年兴起的一个轻量级的java开发框架)+springmvc(spring框架提供的构建web应用程序的全功能mvc模块)+mybatis3(一种开源框架)+tomcat7(目前比较流行的web应用服务器)。前端与用户的交互可以使用css(层叠样式表,英文全称:cascadingstylesheets,是一种用来表现html或xml(标准通用标记语言的一个子集)等文件样式的计算机语言)+js(即javascript,一种直译式脚本语言)+html(标准通用标记语言的一个应用)实现界面展示,并支持实现前台导出和下载打印等使用场景,若不需要在前台展示,也可以只保存文件到主机。

在上述架构下,用户使用查询条件向服务器发送请求,请求被spring前端控制servelt(是用java编写的服务器端程序)中的dispatcherservlet(一种前置控制器)捕获;dispatcherservlet对请求中的url(统一资源定位符)进行解析,得到请求资源标识符(uri),然后根据该uri,调用handlermapping(处理器映射)获得该handler(一种消息处理器)配置的对象;提取request(一种获取请求信息的对象)中的模型数据,填充handler入参,开始执行handler;controller(在springmvc中,是一种负责处理由dispatcherservlet分发的请求的控制器)在handler完成业务逻辑的处理后将返回一个modelandview(一种包含视图名称或视图对象以及一些模型属性的对象)给dispatcherservlet,得到返回的响应pdf文档,可以打开或者保存。

简要流程为:获取查询请求,前端控制dispatcherservlet捕获,对请求中url进行解析,获得handler,选择一个合适的handleradapter,提取request中的模型数据,填充handler入参,开始执行handler,通过service层(服务层),调用dao层(dao层是数据访问层,用来访问数据库实现数据的持久化)接口,查询数据库,返回业务数据,通过模板类或自定义模板类(在本发明中即表示s2中所述pdf模版类)处理业务数据,生成pdf文档,向dispatcherservlet返回一个modelandview对象;dispatcherservlet将渲染结果返回给用户。

上述过程使用的jar包有:itextpdf.jar(用于核心类处理)和itext-asian.jar(用于中文处理),其中应用框架使用jar(是一种软件包文件格式),根据项目集成选择对应版本。

pdf模版类可以根据业务数据类型自主定义,进而得到pdf模板库。

itext包实现了pdf文件初始化的工作,同时页面大小、页尾页脚都可以在初始化时默认,减少开发人员工作;开发人员只要关注具体的业务数据以及需要的展示格式,常用的场景是格式固定,业务数据不同;大部分的工作都可以复用模板,开发人员只要传入业务数据,通过模板展示即可。

以销售人员与用户谈妥的协议文件场景为例:这类文件比较适合使用模板形式,如甲乙双方的企业信息,需要遵循的法律条款以及达成的协议,各自的权利以及义务,出现争执时的解决方案等。前台根据模板录入信息,保存。pdf模板类接收前台通过查询条件查到需要导出的协议文件数据流,将业务数据进行处理后即完成数据的渲染工作,生成pdf文件,展示给用户,同时,可以在主机上也保存一份。pdf模板类是功能处理的核心部分。

本发明通过提供定义好的pdf模板类,使开发人员只要关注业务数据,完全不用关心pdf生成过程,便捷的完成业务数据以pdf格式快速导出的开发任务,提高开发效率,加快项目进度。

进一步,所述s2中所述选择所需的pdf模版的过程为:根据所述获取到的业务数据中的所有数据流类型,从预设的pdf模版库中选择出包含与各数据流类型相对应的模版组件的pdf模版。

具体的,根据业务数据中的数据流类型选择pdf模版,使被选择的pdf模版中包含有业务数据所需要的各种元素。

该改进中,被选择出的pdf模版能满足业务数据的各种数据流展示,根据实际应用情况展示业务数据,实用性高,适用的业务范围广。

进一步,所述s2中所述模版组件包括:

基本格式定义组件,用于根据所述业务数据定义pdf模版的基本格式,所述基本格式包括页眉、页脚、表格格式、字体格式和总页数;

初始化设置组件,用于根据所述业务数据初始化设置pdf模版的基本格式;

文档布局组件,用于将解析业务数据后获得的信息数据中的文档内容根据文档内容的数据量使用功能块或功能段落实现以pdf格式展示。

具体的,基本格式组件可以完成定义数据表列数、设置表格、定义表格宽度、定义表格宽度百分比、设置表格的底色和对齐方式、设置表头元素、设置字体和字体格式、定义页面大小、增加页眉页脚和设置总页数等各种功能。

初始化设置组件可以实例化模版信息,可以完成在打开文档时,创建一个预设的总页数的模版、设置页脚下中的页码、一页加载完成后触发写入页眉和页脚、设置页眉坐上的图片和右上的名称、指定图片的位置、设置总页数、将页眉写到文档中并指定位置等实例化功能。

文档布局组件中,通常少量信息是通过功能块(chunk)来显示,比如甲方名称、甲方地址、邮政编码和设置下划线等功能。一个页面有多个功能块的时候,可以实现精细化控制,每个小模块可以单独处理,完成版面编排。大篇幅的内容通过功能段(paragraph)来控制,如双方约定的篇幅较大的内容。

该改进中,通过细分的模版组件来精确匹配业务数据中的各种数据流类型,展示效果好,满足各种业务数据的规范快速展示的需求。

进一步,所述s2中所述模版组件还包括水印组件,用于在所述生成的pdf文件中添加预设的水印信息。

具体的,例如addwatermark类实现了水印功能,可以设置为文字、图片、旋转角度等,通过坐标设置显示位置。水印可以是企业logo,特效文字,个性化图片辅助功能美化文件。addwatermark类主要通过公用方法pdfreader和pdfstamper完成对水印功能的实现。

上述所有模版组件中的元素多可以固化,所有元素信息也都是可复用的。

该改进中,可以给导出的pdf文档中添加水印信息,有助于满足宣传和保护版权的作用。

进一步,所述s2中所述所需的pdf模版为多个,每个pdf模版包括一个以上模版组件;

所述s3中还包括:将所述分别对应的信息数据填充到对应的模版组件后,调用预设的合并pdf类将填充信息数据后的多个pdf模版合并生成pdf文件进行展示。

具体的,为了增加通用性,所有模版组件包含的功能都可单独在一个pdf模板里实现,可以通过对模板的合并实现复用;合并是通过copypdf类实现,如copypdf(pdffile1,pdffile3,pdffile4,pdffile2)(按照顺序合并),即展示时将每个文件顺序连接为一个文件。copypdf类是通过公共方法pdfcopy和pdfreader实现的。pdfcopy只能实现文件的合并,不能实现内容的合并,即每页的内容还是保持不变。

该改进中,所有pdf文档组成部分都可以复用单独的模板组件部分功能,开发时,只要了解各个组件部分的功能以及实现的模板,完成模板功能的组装,可以快速构建自己的业务功能实现。

生成的pdf文件可以响应前台请求,被下载,打印,应用,同时pdf文件被文件服务器统一管理。主机上的pdf文档还可以通过对外提供webservice(一种可以接收从网络上的其它系统中传递过来的请求,轻量级的独立的通讯技术)等协议报文,生成pdf文档远程传输。主机上的pdf文档可以按照规则通过crontab(crontab命令常见于unix和类unix的操作系统之中,用于设置周期性被执行的指令)清理和备份pdf文档。

实施例2

如图2所示,一种实现以pdf格式快速导出业务数据的系统,包括以下模块:

用户交互模块,用于根据用户的查询条件向模版获取模块发送获取业务数据的请求,并以展示界面的形式将pdf文件展示给用户;

模版获取模块,用于接收所述获取业务数据的请求,并根据请求中的查询条件获取所需的业务数据,调用预设的pdf模版类从预设的pdf模版库中选择所需的pdf模版,所述pdf模版包含与所述获取到的业务数据相对应的模版组件;

pdf生成模块,用于初始化所述pdf模版,加载所述pdf模版中的模版组件,并解析所述业务数据得到与所述模板组件分别对应的信息数据,将所述分别对应的信息数据填充到对应的模版组件后将pdf模版生成pdf文件并发送给用户交互模块进行展示。

本发明可以采用itext包(itext是java中用于创建和操作pdf文件的开源库)来完成pdf文件的生成和导出,框架采用:spring4(spring是一个开源框架,spring是于2003年兴起的一个轻量级的java开发框架)+springmvc(spring框架提供的构建web应用程序的全功能mvc模块)+mybatis3(一种开源框架)+tomcat7(目前比较流行的web应用服务器)。前端与用户的交互可以使用css(层叠样式表,英文全称:cascadingstylesheets,是一种用来表现html或xml(标准通用标记语言的一个子集)等文件样式的计算机语言)+js(即javascript,一种直译式脚本语言)+html(标准通用标记语言的一个应用)实现界面展示,并支持实现前台导出和下载打印等使用场景,若不需要在前台展示,也可以只保存文件到主机。

在上述架构下,用户使用查询条件向服务器发送请求,请求被spring前端控制servelt(是用java编写的服务器端程序)中的dispatcherservlet(一种前置控制器)捕获;dispatcherservlet对请求中的url(统一资源定位符)进行解析,得到请求资源标识符(uri),然后根据该uri,调用handlermapping(处理器映射)获得该handler(一种消息处理器)配置的对象;提取request(一种获取请求信息的对象)中的模型数据,填充handler入参,开始执行handler;controller(在springmvc中,是一种负责处理由dispatcherservlet分发的请求的控制器)在handler完成业务逻辑的处理后将返回一个modelandview(一种包含视图名称或视图对象以及一些模型属性的对象)给dispatcherservlet,得到返回的响应pdf文档,可以打开或者保存。

系统的简要运行流程为:用户交互模块获取查询请求,模版获取模块控制dispatcherservlet捕获,对请求中url进行解析,获得handler,选择一个合适的handleradapter,pdf生成模块提取request中的模型数据,填充handler入参,开始执行handler,通过service层(服务层),调用dao层(dao层是数据访问层,用来访问数据库实现数据的持久化)接口,查询数据库,返回业务数据,通过模板类或自定义模板类(模版获取模块中所述pdf模版类)处理业务数据,生成pdf文档,向dispatcherservlet返回一个modelandview对象;dispatcherservlet将渲染结果返回给用户交互模块。

上述过程使用的jar包有:itextpdf.jar(用于核心类处理)和itext-asian.jar(用于中文处理),其中应用框架使用jar(是一种软件包文件格式),根据项目集成选择对应版本。

pdf模版类可以根据业务数据类型自主定义,进而得到pdf模板库。

itext包实现了pdf文件初始化的工作,同时页面大小、页尾页脚都可以在初始化时默认,减少开发人员工作;开发人员只要关注具体的业务数据以及需要的展示格式,常用的场景是格式固定,业务数据不同;大部分的工作都可以复用模板,开发人员只要传入业务数据,通过模板展示即可。

以销售人员与用户谈妥的协议文件场景为例:这类文件比较适合使用模板形式,如甲乙双方的企业信息,需要遵循的法律条款以及达成的协议,各自的权利以及义务,出现争执时的解决方案等。前台根据模板录入信息,保存。pdf模板类接收前台通过查询条件查到需要导出的协议文件数据流,将业务数据进行处理后即完成数据的渲染工作,生成pdf文件,展示给用户,同时,可以在主机上也保存一份。pdf模板类是功能处理的核心部分。

本发明通过提供定义好的pdf模板类,使开发人员只要关注业务数据,完全不用关心pdf生成过程,便捷的完成业务数据以pdf格式快速导出的开发任务,提高开发效率,加快项目进度。

进一步,所述模版获取模块还用于根据所述获取到的业务数据中的所有数据流类型,从预设的pdf模版库中选择出包含与各数据流类型相对应的模版组件的pdf模版。

具体的,根据业务数据中的数据流类型选择pdf模版,使被选择的pdf模版中包含有业务数据所需要的各种元素。

该改进中,被选择出的pdf模版能满足业务数据的各种数据流展示,根据实际应用情况展示业务数据,实用性高,适用的业务范围广。

进一步,所述s2中所述模版组件包括:

基本格式定义组件,用于根据所述业务数据定义pdf模版的基本格式,所述基本格式包括页眉、页脚、表格格式、字体格式和总页数;

初始化设置组件,用于根据所述业务数据初始化设置pdf模版的基本格式;

文档布局组件,用于将解析业务数据后获得的信息数据中的文档内容根据文档内容的数据量使用功能块或功能段落实现以pdf格式展示。

具体的,基本格式组件可以完成定义数据表列数、设置表格、定义表格宽度、定义表格宽度百分比、设置表格的底色和对齐方式、设置表头元素、设置字体和字体格式、定义页面大小、增加页眉页脚和设置总页数等各种功能。

初始化设置组件可以实例化模版信息,可以完成在打开文档时,创建一个预设的总页数的模版、设置页脚下中的页码、一页加载完成后触发写入页眉和页脚、设置页眉坐上的图片和右上的名称、指定图片的位置、设置总页数、将页眉写到文档中并指定位置等实例化功能。

文档布局组件中,通常少量信息是通过功能块(chunk)来显示,比如甲方名称、甲方地址、邮政编码和设置下划线等功能。一个页面有多个功能块的时候,可以实现精细化控制,每个小模块可以单独处理,完成版面编排。大篇幅的内容通过功能段(paragraph)来控制,如双方约定的篇幅较大的内容。

该改进中,通过细分的模版组件来精确匹配业务数据中的各种数据流类型,展示效果好,满足各种业务数据的规范快速展示的需求。

进一步,所述s2中所述模版组件还包括水印组件,用于在所述生成的pdf文件中添加预设的水印信息。

具体的,例如addwatermark类实现了水印功能,可以设置为文字、图片、旋转角度等,通过坐标设置显示位置。水印可以是企业logo,特效文字,个性化图片辅助功能美化文件。addwatermark类主要通过公用方法pdfreader和pdfstamper完成对水印功能的实现。

上述所有模版组件中的元素多可以固化,所有元素信息也都是可复用的。

该改进中,可以给导出的pdf文档中添加水印信息,有助于满足宣传和保护版权的作用。

进一步,所述模版获取模块中所述所需的pdf模版为多个,每个pdf模版包括一个以上模版组件;

所述pdf生成模块还用于将所述分别对应的信息数据填充到对应的模版组件后,调用预设的合并pdf类将填充信息数据后的多个pdf模版合并生成pdf文件并发送给用户交互模块进行展示。

具体的,为了增加通用性,所有模版组件包含的功能都可单独在一个pdf模板里实现,可以通过对模板的合并实现复用;合并是通过copypdf类实现,如copypdf(pdffile1,pdffile3,pdffile4,pdffile2)(按照顺序合并),即展示时将每个文件顺序连接为一个文件。copypdf类是通过公共方法pdfcopy和pdfreader实现的。pdfcopy只能实现文件的合并,不能实现内容的合并,即每页的内容还是保持不变。

该改进中,所有pdf文档组成部分都可以复用单独的模板组件部分功能,开发时,只要了解各个组件部分的功能以及实现的模板,完成模板功能的组装,可以快速构建自己的业务功能实现。

生成的pdf文件可以响应前台请求,被下载,打印,应用,同时pdf文件被文件服务器统一管理。主机上的pdf文档还可以通过对外提供webservice(一种可以接收从网络上的其它系统中传递过来的请求,轻量级的独立的通讯技术)等协议报文,生成pdf文档远程传输。主机上的pdf文档可以按照规则通过crontab(crontab命令常见于unix和类unix的操作系统之中,用于设置周期性被执行的指令)清理和备份pdf文档。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1