背景技术
可变数据印刷是指大数据量的可变数据的打印、输出过程,每个印刷面有部分或全部数据(内容)是可变的,其中,数据具体包括文本、数字、图像、条形码等等。该印刷方式对版式设计的复杂程度要求不高,但对数据的处理速度和处理灵活性有较高要求。可变数据印刷常用于银行证券、保险、电信等行业的账单打印、商业文书制作等领域中。目前可变数据印刷的处理速度超过了每分钟2000页,这就对可变数据印刷过程中可变数据的生成速度提出了较高要求。
脚本(Script)是使用特定的描述性语言,依据特定的格式编写的以纯文本形式进行保存的程序,也可以称为宏或批处理文件。脚本相对于普通的应用程序来说比较接近自然语言,一般不通过编译而是解释执行,适用于一些轻量级的控制。脚本在执行时由系统所支持的脚本解释器逐条翻译为机器可识别的指令,并按顺序执行。由于脚本在执行过程中多了逐条解释的过程,因此其执行效率较低。
在可变数据印刷过程中,首先需要按照输出的要求制作不同的输出模板,然后在输出时把可变数据源中的可变数据按照输出模板的要求动态填充到输出模板中。在动态填充过程中对可变数据有较高的个性化处理的要求,例如要求根据可变数据生成新的可变数据、对可变数据进行数值运算和/或逻辑处理等等,这些要求是其他普通的排版软件或字处理软件所不能够支持的。
对可变数据印刷来说,对可变数据实现个性化处理要求具备一定的脚本支持能力,脚本需要满足以下的要求:
(1)具有足够的逻辑处理能力,以支持在可变数据印刷过程中对可变数据进行数值运算和/或逻辑处理的要求;
(2)具有足够的执行效率,以支持在可变数据印刷过程中对输出速度的要求;
(3)具有足够的可扩展能力,以满足对可变数据的个性化处理的要求不断提升。
现有基于可变数据印刷的脚本实现方案存在一定缺陷。现有在可变数据印刷过程中包括两种常用的脚本实现方式。其中一种脚本实现方式是:使用内置的脚本引擎,该脚本引擎在实现上比较简单,但对可变数据进行数值运算和/或逻辑处理的能力比较弱,扩展性也比较差。另外一种脚本实现方式是:使用系统提供的脚本,如VBScript或Jscript,这种实现方式虽然扩展性比较强,但是由于脚本的实现机制是解释型的,在执行过程中需要逐条进行解释,并且脚本引擎是独立的进程,将导致脚本的执行效率比较低,无法满足可变数据印刷对输出速度的要求。
发明内容
本发明提供一种可变数据印刷过程中的脚本实现方法及装置,用以解决现有可变数据印刷过程中脚本的数值运算和逻辑处理能力弱、扩展性差、执行效率低的问题。
本发明提供的可变数据印刷过程中的脚本实现方法,包括:
可变数据印刷模块创建作业,在所述作业中绑定对应的可变数据源,并在所述作业中加入脚本编辑器根据所述可变数据源提供的可变数据编写的指定脚本的文本描述;
可变数据印刷模块在输出作业时,将指定脚本的文本描述发送给脚本处理模块,以及所述脚本处理模块根据指定脚本的文本描述生成动态链接库;
可变数据印刷模块加载所述动态链接库,并按照指定脚本的文本描述的顺序依次调用动态链接库中对应的方法。
本发明提供的可变数据印刷过程中的脚本实现装置,包括可变数据印刷模块、脚本编辑器和脚本处理模块,其中:
所述可变数据印刷模块,用于创建作业,在所述作业中绑定对应的可变数据源,并在所述作业中加入指定脚本的文本描述;在输出作业时,将指定脚本的文本描述发送给所述脚本处理模块,以及加载所述脚本处理模块生成的动态链接库,并按照指定脚本的文本描述的顺序依次调用动态链接库中对应的方法;
所述脚本编辑器,用于根据所述可变数据源编写指定脚本的文本描述;
所述脚本处理模块,用于接收所述可变数据印刷模块发送的指定脚本的文本描述,并根据指定脚本的文本描述生成动态链接库。
本发明提供的可变数据印刷过程中的脚本实现方法及装置,能够满足可变数据印刷过程中对可变数据进行数值运算和逻辑处理的要求;通过将指定脚本的文本描述生成动态连接库,保证了脚本处理模块和可变数据印刷模块运行于相同的系统进程中,避免了由于跨进程而带来额外的调用开销,保证了系统的整体运行效率;提供脚本的支持能力的脚本处理模块是基于插件方式独立实现的,对现有可变数据印刷模块的处理没有影响。本发明提供的可变数据印刷过程中的脚本实现方案具有很大的灵活性,可以对不同的可变数据的数值运算和逻辑处理提供支持,同时保证了脚本的高效率执行,满足了系统对输出效率的要求。本方案适用于任意硬件配置的可变数据印刷系统,可以支持不同需求的脚本的数值运算和逻辑处理能力,并能够提供提升脚本的扩展性和执行效率。
具体实施方式
为了提高可变数据印刷过程中脚本的数值运算和逻辑处理能力、提升脚本的扩展性和执行效率,以满足可变数据印刷的要求,本发明实施例提供了一种可变数据印刷过程中的脚本实现方法及装置,下面将结合说明书附图对本发明实施例的实现原理、具体实施过程及其能够达到的有益效果进行详细的阐述。
本发明实施例中,可变数据印刷过程中提供脚本的支持能力的脚本处理模块是基于插件方式独立实现的,脚本处理模块的功能结构示意图如图1所示。脚本处理模块的实现依赖于Windows操作系统中的Net Framework平台,脚本处理模块具备脚本引擎的核心功能。可变数据印刷模块在创建作业和输出作业时均需要使用脚本处理模块。在创建作业时需要对指定脚本的文本描述进行实时的语法检查,在输出作业时需要对指定脚本的文本描述进行语法检查,语法检查通过后生成编译型程序代码片段,再对编译型程序代码片段进行编译处理,生成动态连接库;最终,通过加载动态连接库执行相应的脚本功能。
可变数据印刷模块负责加载和卸载脚本处理模块。在创建作业时通过脚本编辑器编写对可变数据进行逻辑运算和/或数值运算的文本描述内容,即需要实现的脚本功能。在编写指定脚本的文本描述时,可以随时调用脚本处理模块的验证接口对指定脚本的文本描述进行语法检查,之后指定脚本的文本描述将被加入到创建的作业中。
可变数据印刷模块在输出作业时,首先对作业进行预处理,对作业中一个或多个指定脚本的文本描述进行收集,并提交到脚本处理模块中,脚本处理模块根据指定脚本的文本描述生成编译型程序代码片段,并对该编译型程序代码片段进行编译处理,生成动态链接库。在指定脚本的文本描述中每一个脚本的功能定义在动态链接库中均有对应的功能入口。可变数据印刷模块将动态加载生成的动态链接库,并进行作业的输出处理过程;当在作业的输出处理过程中遇到了插入到作业中的脚本调用请求时,将把对应的功能定义转发到动态链接库中对应的功能入口上,在动态链接库中执行相应的脚本功能,并在执行完毕后返回执行结果;在作业的输出处理执行完毕后,可变数据印刷模块将卸载所加载的动态链接库,同时释放相应的资源。
本发明实施例中,通过Windows Net Framework的支持,以完全兼容编译型程序(例如C#、C、C++等)语法规则的方式实现脚本的支持能力,脚本的文本描述通过动态编译为动态链接库的方式来实现,脚本的文本描述的编写遵循编译型程序语法规则,满足了脚本的逻辑处理和数值运算的灵活性和功能性要求,同时通过动态链接库的方式保证了脚本引擎和可变数据印刷处于同一进程中,避免了由于跨进程带来额外的调用开销导致系统运行效率低的问题,在整体上满足可变数据印刷在脚本的处理速度和功能上的要求。
一个实施例中,可变数据印刷过程中的脚本实现装置如图2所示,包括可变数据源200、可变数据印刷模块201、脚本编辑器202和脚本处理模块203,其中:
可变数据源200,用于提供可变数据;
可变数据印刷模块201,用于创建作业,在作业中绑定对应的可变数据源,并加入指定脚本的文本描述;在输出作业时,将指定脚本的文本描述发送给脚本处理模块203,以及动态加载脚本处理模块203生成的动态链接库,并按照指定脚本的文本描述的顺序依次调用动态链接库中对应的方法;
可变数据印刷模块201通过按照指定脚本的文本描述的顺序依次调用动态链接库中对应的方法,可以最终完成对脚本的调用,实现脚本的支持能力,较佳的,可变数据印刷模块203,还用于在指定脚本的文本描述执行完毕之后,卸载动态链接库;
脚本编辑器202,用于根据可变数据源提供的可变数据编写指定脚本的文本描述;
脚本处理模块203,用于接收可变数据印刷模块201发送的指定脚本的文本描述,并根据指定脚本的文本描述生成动态链接库。
较佳的,该装置中:
可变数据印刷模块201,还用于在创建作业时加载脚本处理模块203;
脚本编辑器202,还用于将编写的指定脚本的文本描述发送给脚本处理模块203,以及根据脚本处理模块203反馈的语法错误信息修正指定脚本的文本描述;
脚本处理模块203,还用于对脚本编辑器202编写的指定脚本的文本描述进行实时的语法检查,并将语法检查得到的语法错误信息反馈给脚本编辑器202。
具体实施中,脚本编辑器202,还用于在根据可变数据源提供的可变数据生成指定脚本的文本的描述过程中,根据可变数据源中当前的可变数据字段进行指定的数值运算和/或逻辑处理,生成新的可变数据字段,并将新的可变数据字段增加到作业绑定的可变数据源中。
其中,脚本处理模块203的一种可能结构,如图3所示,具体包括:
检验子模块301,用于接收指定脚本的文本描述,并对接收到的指定脚本的文本描述进行语法检查;
处理子模块302,用于在确认没有语法错误时,根据指定脚本的文本描述生成编译型程序代码片段;
编译子模块303,用于对编译型程序代码片段进行编译处理,生成动态链接库。
基于同一技术构思,本发明实施例提供了一种可变数据印刷过程中的脚本实现方法,如图4所示,包括如下步骤:
S401、可变数据印刷模块创建作业,在创建的作业中绑定对应的可变数据源,并加入脚本编辑器根据可变数据源提供的可变数据编写的指定脚本的文本描述。
具体实施中,可变数据印刷模块在创建的作业中绑定对应的可变数据源,并通过脚本编辑器在作业对应的印刷面(页面)中加入一个或者多个指定脚本的文本描述。
在创建作业时,通过脚本编辑器编写对可变数据源提供的可变数据进行数值运算和/或逻辑处理的指定脚本的文本描述。脚本编辑器支持编译型程序语法规则,在编写指定脚本的文本描述时可以支持直接在脚本编辑器中对编译型程序语言的逻辑操作符和/或数值运算符进行选择插入。脚本编辑器在根据可变数据源提供的可变数据生成指定脚本的文本描述的过程中,脚本编辑器可以根据可变数据源中当前的可变数据字段进行指定的逻辑处理和/或数值运算,生成新的可变数据字段,并将新的可变数据字段增加到作业绑定的可变数据源中。
在作业中加入指定脚本的文本描述之前,较佳的,可以检查加入的文本描述的语法是否符合脚本处理模块的要求,因此可变数据印刷模块可以在创建作业时加载脚本处理模块,脚本编辑器可以将指定脚本的文本描述发送给脚本处理模块,脚本处理模块通过验证接口对指定脚本的文本描述进行实时的语法检查,如果发现指定脚本的文本描述中存在语法错误,则将语法检测得到的语法错误信息反馈给脚本编辑器;脚本编辑器根据语法错误信息修正指定脚本的文本描述。
S402、可变数据印刷模块在输出作业时,将指定脚本的文本描述发送给脚本处理模块,以及脚本处理模块根据指定脚本的文本描述生成动态链接库;
具体实施中,可变数据印刷模块在输出作业时,将首先进行预处理,预处理过程包括收集当前作业中的所有指定脚本的文本描述,把收集到的指定脚本的文本描述(集合)发送给脚本处理模块,脚本处理模块对接收到的指定脚本的文本描述进行语法检查,生成编译型程序代码片段并进行编译处理,编译处理后的结果即为当前作业的脚本调用所需要的动态链接库。每个作业都将执行相同的过程,即每个作业中的脚本支持能力的实现都将由脚本处理模块来生成独立的动态链接库。
S403、可变数据印刷模块加载动态链接库,并根据指定脚本的文本描述的顺序依次调用动态链接库中对应的方法。
具体实施中,根据指定脚本的文本描述的顺序依次调用动态链接库中对应的方法,即可实现脚本的支持能力,也就是说,当输出作业过程中遇到了插入到作业中的脚本调用请求,则将指定脚本的文本描述中该脚本对应的功能定义转发到动态链接库中对应的功能入口,多个脚本调用请求可以通过脚本功能列表的形式进行缓冲,然后在动态链接库中按顺序依次执行相应的脚本功能,并在执行完毕后返回执行结果。
较佳的,该方法还包括如下步骤:
S404、在指定脚本的文本描述执行完毕之后,可变数据印刷模块卸载所加载的根据指定脚本的文本描述生成的动态链接库,当然在卸载动态链接库的同时,需要释放相应的资源。
其中,S402具体可以包括如下步骤:
步骤1、脚本处理模块对接收到的指定脚本的文本描述进行语法检查;
步骤2、如果根据语法检查发现存在语法错误,则根据检查出的语法错误修正指定脚本的文本描述,直至确认没有语法错误时,根据指定脚本的文本描述生成编译型程序代码片段,其中编译型程序代码片段可以为C#程序代码片段、C程序代码片段、C++程序代码片段,等等;
步骤3、脚本处理模块对生成的编译型程序代码片段进行编译处理,生成动态链接库。
本发明实施例中,可以在对外的接口上保持现有可变数据印刷系统接口的兼容性,对可变数据印刷作业的创建和输出没有影响,系统的使用方式不变,保证了系统的一致性。
本发明实施例中,通过插件方式实现可变数据印刷过程中脚本的支持能力,使可变数据印刷模块可以提供更为灵活高效的脚本实现方案,从而有效解决了可变数据印刷过程中输出速度和可变数据处理能力之间的矛盾,从总体上提高了系统的运行效率和灵活性。
本领域的技术人员应该明白,本发明实施例可提供为方法、装置或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件的实施例的形式。而且,本发明可采用在一个或多个其中包括计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。