靠截获打印数据实现任意账单与小票电子化的方法
技术领域
本发明涉及一种将任意纸质账单、小票进行电子化及无纸化的技术,尤其涉及一种靠截获打印数据实现任意账单与小票电子化的方法。
背景技术
目前,大部分商家的收银系统都采用windows操作系统平台,所有账单几乎都是采用打印机打印的纸质账单,也有少部分商家采用电子账单响应碳排放的号召。
现阶段,纸质账单的电子化主要采用如下技术:
一、修改现有的收银软件,直接生成电子账单。这是目前大部分采用电子账单的大型企业采用的方法,也是行业的通用方法。
二、利用二维码技术,生成账单的二维码信息,完成账单的电子化,客户可凭该二维码利用数据库技术获取此账单的详细信息。具体流程为:去超市购物的顾客在收银台处结账后,商家生成一个二维条码,显示在收银台的一个终端上,这个二维条码中包含有交易相关信息,顾客用手机拍摄此二维条码后即可离去,无需索取小票,顾客可以凭该二维条码的图像去向超市索取发票或退换货。超市工作人员扫描并解析条码内容,同时访问超市的后台数据库,辨别条码真伪,获取交易的商品清单,生成并打印发票或根据情况完成退换货。为防止顾客凭同一条码图片多次兑换发票,超市打印发票后在数据库中做相应记录。
上述第一种技术的不足之处在于必须在收银软件的源头(即源代码)进行修改,对那些有雄厚资金实力及技术实力的大型企业是适用的,而绝大多数中小企业不可能自己去修改编制收银软件,也不可能淘汰现有收银系统而再购一套新的系统。
上述第二种技术的不足之处与第一种技术一样,用户也必须面临现有软件的改动,甚至还要改变消费者现有的消费习惯。
发明内容
为克服现有技术的上述缺陷,本发明的目的在于提供一种靠截获打印数据实现任意账单与小票电子化的方法,可以通过软件控制实现任意纸质账单、小票的电子化及无纸化操作。
本发明的技术方案为:一种靠截获打印数据实现任意账单与小票电子化的方法,包括以下步骤:
(1) 在收银系统执行打印操作过程中,截获打印内容;
(2) 判断打印内容是否为预先定义的账单或小票;
(3) 如打印内容是预先定义的账单或小票,将打印内容重生成为图片文件和文本文件,如打印内容不是定义的账单或小票,继续打印。
所述步骤(1)中的打印内容的截获可以是利用windows操作系统的打印机制来完成,截获的打印内容优选为经过打印驱动处理后生成的扩展名为.SPL的文件。
所述步骤(2)可以是根据预先定义的账单或小票格式定义来判断打印内容是否为预先定义的账单或小票。
优选地,所述步骤(3)中将打印内容转换为图片文件和文本文件之前,判断打印内容是否需要纸质打印,如打印内容需要纸质打印则将打印内容先发送至物理打印机打印,然后再生成图片文件和文本文件;如打印内容不需要纸质打印则取消物理打印机打印,将打印内容生成图片文件和文本文件。
所述文本文件可以是根据账单或小票的格式定义逐项逐行分析账单内容生成的。
所述图片文件优选为JPG格式。
所述步骤(1)中的具体截获打印内容的时间是收银软件发出打印账单或小票指令后,物理打印机开始真实打印到打印纸之前。
优选地,本方法采用虚拟打印机生成打印内容。
一种靠截获打印数据实现任意账单与小票电子化的系统,包括POS机和与其连接的物理打印机,所述POS机安装windows操作系统并安装有能够截获打印内容将其重生成为图片文件和文本文件的软件,所述POS机设有或不设有虚拟打印机,所述POS机进行打印时,打印任务经打印驱动处理或虚拟打印机生成扩展名为.SPL的打印内容,所述POS机根据预先设置在其内部的账单或小票格式定义判断打印内容是否为所定义的账单或小票,如打印内容是定义的账单或小票,所述POS机将打印内容重生成为图片文件和文本文件,如打印内容不是定义的账单或小票,所述POS机将打印内容发送至物理打印机进行打印,所述POS机将打印内容重生成为图片文件和文本文件之前,判断打印内容是否需要纸质打印,如打印内容需要纸质打印,所述POS机将打印内容发送至物理打印机完成纸质打印,如打印内容不需要纸制打印,则取消物理打印机打印。
本发明的有益效果:本发明基于windows操作平台,在不改变原有已经存在的收银系统与数据,不需要用户对现有软件、设备进行任何改变的基础上,只需要在计算机中另行安装一套软件即可实现账单及小票的电子化和无纸化操作,具有普遍适用性,适合大面积推广使用。
由于本发明可以设置虚拟打印机来完成打印任务,生成扩展名为.SPL的文件,因此可以保证在windows下对所有打印机都支持,与现有收银系统采用的打印产品无关,可以作为通用的账单电子化手段,节省大量的纸张。由于文本文件是根据账单或小票的格式定义逐项逐行分析账单或小票内容生成的,本发明也可以作为一个通用的数据采集器,便于用户自己进行数据的分析处理。
附图说明
图1是本发明采用物理打印机的工作流程;
图2是本发明采用虚拟打印机截获打印内容并处理的工作流程。
具体实施方式
本发明提供了一种靠截获打印数据实现任意账单与小票电子化的方法,包括以下步骤:
(1)在收银系统执行打印操作过程中,截获(拦截)打印内容;
(2)判断打印内容是否为预先定义的账单或小票;
(3)如打印内容是预先定义的账单或小票,将打印内容重生成为图片文件和文本文件,如打印内容不是定义的账单或小票,继续打印。
所述步骤(1)中的具体截获打印内容的时间是收银软件发出打印账单或小票指令后,打印机开始真实打印到打印纸之前。
所述步骤(1)中的打印内容的截获可以是利用windows操作系统的打印机制来完成,如通过修改DOS设备驱动程序或BIOS中的INT 17H中断服务程序截获打印内容,或者利用简单的Hook程序对windows操作系统的GDI函数进行监控,通过GDI函数的Textout接口截获其输出的打印内容等。采用windows操作系统的打印机制完成打印内容的截获,使商家在不改变原有收银软件的基础上即可实现本发明。
截获的打印内容优选为经过打印驱动处理后生成的扩展名为.SPL的文件,以方便将其转换成其它任意格式的文档。
所述步骤(2)可以是根据预先定义的账单或小票格式定义来判断打印内容是否为账单或小票。在进行账单电子化时,账单或小票格式是解析判断文本的关键,可以将一张特定的账单或小票依次分为标题、报表头、报表明细、报表汇总、商家信息与提示部分等。在格式文件中,分别定义每个部分的起始标志项、某行中的项数、某项的数据类型、统计项、特定项(例如电话、网址)在哪个部分的哪一项等等,甚至还可以定义一些特殊设置,以控制软件在解析文本时的行为。
在解析判断打印内容是否为账单或小票之前,截获到的文字信息是无意义的文字,只有将这些无意义的文字与账单或小票格式的定义进行比较分析,这些无意义的文字才变成一项项的数据。
优选地,所述步骤(3)中将打印内容转换为图片文件和文本文件之前,判断打印内容是否需要纸质打印(打印纸质账单或小票),如打印内容需要纸质打印则将打印内容先发送至物理打印机打印,然后再生成图片文件和文本文件;如打印内容不需要纸质打印则取消物理打印机打印,将打印内容直接生成图片文件和文本文件。在账单或小票电子化的同时,不影响原有收银软件的任何运行状态及数据的改变,既可以继续打印纸质账单或小票,也可以取消纸质账单或小票的打印,给已有收银系统的商家带来极大的便利。
所述文本文件可以是根据账单或小票的格式定义逐项逐行分析账单内容生成的。所述图片文件优选为JPG格式。由于生成的图片文件与实际打印出来的格式、大小完全一致,是纸质账单的真正的电子化,将打印内容解析生成文本文件,也便于对账单或小票进行后续处理,例如进行统计分析、网页发布等等。
基于windows操作系统的打印机制,所有打印内容经过打印驱动处理后,生成扩展名为.SPL的文件(MS-EMFSPOOL格式,即Enhanced Metafile Spool Format),该文件符合微软的MS-EMFSPOOL格式标准,可以将该标准的文档转换为任意其它格式的文档,如JPG格式并提取文本。但由于打印机的千差万别,很多厂家打印机实际生成的.SPL文件并不遵循微软的MS-EMFSPOOL格式标准,而是采用自己的标准。
为保证在windows下本发明对所有打印机都适用,本方法可以设置虚拟打印机来完成打印任务,打印内容由虚拟打印机生成,即采用虚拟打印机生成.SPL文件,如打印内容经判断不是定义的账单或小票,由虚拟打印机将打印内容转打印至物理打印机完成打印,所述步骤(3)中,如打印内容需要纸制打印,也是由虚拟打印机将打印内容转打印至物理打印机打印。
采用本方法的系统,包括POS机和与其连接的物理打印机,所述POS机安装windows操作系统并安装有能够截获打印内容将其重生成为图片文件和文本文件的软件,所述POS机设有或不设有虚拟打印机,所述POS机进行打印时,打印任务经打印驱动处理或虚拟打印机生成扩展名为.SPL的打印内容,所述POS机根据预先设置在其内部的账单或小票格式定义判断打印内容是否为所定义的账单或小票,如打印内容是定义的账单或小票,所述POS机将打印内容重生成为图片文件和文本文件,如打印内容不是定义的账单或小票,所述POS机将打印内容发送至物理打印机或通过虚拟打印机将打印内容转打印至物理打印机进行打印,所述POS机将打印内容重生成图片文件和文本文件之前,判断打印内容是否需要纸质打印,如打印内容需要纸质打印,所述POS机将打印内容发送至物理打印机或通过虚拟打印机将打印内容转打印至物理打印机完成纸质打印,如打印内容不需要纸制打印,则取消物理打印机打印。
参见图1,当应用程序使用能生成标准.SPL文件的打印机打印时,windows系统的打印服务生成标准格式.SPL文件,同时,采用本发明的方法在后台截获该文件,并分析该.SPL文件,根据预先定义好的账单或小票格式判断当前打印内容是否是指定的账单或小票。如果不是,判定为是普通打印,直接发送到物理打印机即可完成当前打印任务,如果是指定的账单或小票,首先判断是否需要纸质打印,在需要纸质打印时先送至物理打印机打印,再继续解析.SPL文件内容,生成JPG格式的图像文件,并根据账单后小票的格式定义,逐项逐行分析账单内容,生成解析好的文本文件,如不需要纸质打印,则取消物理打印机打印,继续解析.SPL文件内容,生成图像文件和文本文件。针对这些文件,可以做很多后续处理,例如将图片文件发送至消费者手机或电子邮箱,利用解析好的文本文件进行数据分析,甚至可以在手机上拨打解析文本中解析好的电话号码。
参见图2,当现有物理打印机不能生成标准格式的.SPL文件时,可以设置虚拟打印机,在这种方式下,当应用程序调用虚拟打印机时,windows系统的打印服务生成标准的.SPL文件,同时采用本发明的方法在后台截获该文件,并分析该.SPL文件,根据预先定义好的账单或小票格式判断当前打印内容是否是指定的账单或小票,如果不是,判定为是普通打印,虚拟打印机将打印任务转至物理打印机打印,以完成当前打印任务,如果打印内容是指定的账单或小票,首先判断是否需要纸质打印,在需要纸质打印时,虚拟打印机将打印内容转至物理打印机进行打印,再继续解析.SPL文件内容,并生成JPG格式的图像文件与文本文件,如不需要纸质打印,则取消物理打印机打印,继续解析.SPL文件内容,生成图像文件和文本文件,需要时可以对这些文件进行后续处理。