条形码打印方法以及条形码打印装置与流程

文档序号:14120787阅读:766来源:国知局
条形码打印方法以及条形码打印装置与流程

本发明涉及条形码的打印,尤其涉及条形码打印方法以及条形码打印装置。



背景技术:

目前,在很多行业中,需要使用到条形码。尤其,例如,在物流行业中,经常通过数据管理服务器来进行单据的电子化管理。因此,在纸质单据输出时,经常使用条形码来表示关键数据,诸如订单号、客户号等等。在申请号201510603962.0的专利中,记载了一种条形码打印方法,该方法不依赖第三方的条形码字体模块,只通过打印设备本身来打印输出包含条形码的文档,从而有效地降低了使用成本。

上述方法虽然能够打印输出包含条形码的文档,但是对其中的条形码的打印位置并没有具体的判定,因此可能会出现条形码与字符或其他条形码相重叠的情况,如图1所示。



技术实现要素:

鉴于上述问题,本发明的目的在于提供了一种条形码打印方法以及条形码打印装置。本发明的条形码打印方法以及条形码打印装置可以有效地避免条形码与字符或其他条形码相重叠的情况

根据本发明的一个方面,提供一种条形码打印方法,该方法包括以下步骤:

a)接收来自外部设备的打印指令,所述打印指令包含多条打印信息流;

b)对所述多条打印信息流进行解析,以获取与每条打印信息流相对应的一行的打印信息,所述打印信息包括所述一行的行号和行高、空白宽度、以及要打印的字符的信息和/或条形码的信息,所述条形码的信息包括所述条形码的高度;

c)对于每个所述条形码,根据所述条形码所在的一行之上的所有行的打印信息和所述条形码所在的一行的打印信息,计算所述条形码的初始坐标;

d)根据每一行的打印信息,确定该行的第一坐标范围,所述第一坐标范围是该行中除了所述字符以外的坐标范围;

e)对于每个所述条形码,将所述条形码的所述初始坐标作为当前坐标,并判定所述当前坐标是否在所述第一坐标范围之内并且所述条形码的所述高度小于等于所述条形码所在一行的行高,如果是,则将所述当前坐标作为所述条形码的打印坐标,并进入步骤g),如果否,则进入步骤f);

f)将所述条形码的初始坐标中的纵坐标或横坐标增加预定量,作为所述条形码的打印坐标,并进入步骤g);

g)根据每行的所述条形码的信息以及所述打印坐标、和/或所述字符的信息,进行打印。

根据上述方法,可以有效地避免条形码与字符或其他条形码相重叠的情况。

所述字符的信息包括所述字符的高度和宽度,在步骤c)中,从所述条形码所在的一行之上的所有行的打印信息中取出每行的行高,将所述每行的行高与所述条形码所在的一行的打印信息中的行高进行相加,得到所述初始坐标的纵坐标,并且所述初始坐标的横坐标是0或所述条形码所在的一行的打印信息中的所述条形码前面的所述空白宽度或所述空白宽度与所述字符的宽度之和。

如此,可以确定每个条形码的初始坐标。

所述条形码所在的一行的行高是该行中字符的最大高度或预定行高。

本发明还提供一种条形码打印装置,所述装置包括:

接收单元,用于接收来自外部设备的打印指令,所述打印指令包含多条打印信息流;

解析单元,用于对所述多条打印信息流进行解析,以获取与每条打印信息流相对应的一行的打印信息,所述打印信息包括所述一行的行号和行高、空白宽度、以及要打印的字符的信息和/或条形码的信息,所述条形码的信息包括所述条形码的高度;

计算单元,对于每个所述条形码,根据所述条形码所在的一行之上的所有行的打印信息和所述条形码所在的一行的打印信息,计算所述条形码的初始坐标;

确定单元,用于根据每一行的打印信息,确定该行的第一坐标范围,所述第一坐标范围是该行中除了所述字符以外的坐标范围;

判定单元,对于每个所述条形码,将所述条形码的所述初始坐标作为当前坐标,并判定所述当前坐标是否在所述第一坐标范围之内并且所述条形码的所述高度小于等于所述条形码所在一行的行高,如果是,则将所述当前坐标作为所述条形码的打印坐标,并进入打印单元,如果否,则进入调整单元;

调整单元,将所述条形码的初始坐标中的纵坐标或横坐标增加预定量,作为所述条形码的打印坐标,进入打印单元;

打印单元,根据每行的所述条形码的信息以及所述打印坐标、和/或所述字符的信息,进行打印。

根据本发明的条形码打印方法和条形码打印装置,可以有效地避免条形码与字符或其他条形码相重叠的情况。

附图说明

图1是根据现有的条形码打印方法所打印的页面的视图;

图2是根据本发明的实施例的条形码打印装置的示意图;

图3是根据本发明的实施例的条形码打印方法的流程图;

图4是根据本发明的实施例的条形码打印方法所打印的页面的视图。

具体实施方式

下面将参考附图描述根据本发明的各种实施例。

图2是根据本发明的实施例的条形码打印装置20的示意图,条形码打印装置20包括接收单元21、解析单元22、计算单元23、确定单元24、判定单元25、调整单元26和打印单元。

图3是根据本发明的实施例的条形码打印方法的流程图。下面结合图2和图3对本发明的实施例进行详细说明。

在步骤s31,接收单元21接收来自外部设备的打印指令,该打印指令包含多条打印信息流。外部设备例如是sap服务器。

在步骤s32,解析单元22对多条打印信息流进行解析,以获取与每条打印信息流相对应的一行的打印信息,打印信息包括一行的行号和行高、空白宽度、以及要打印的字符的信息和/或条形码的信息,条形码的信息包括条形码的高度。

每行的打印信息包括要打印的字符的信息和/或条形码的信息,字符的信息中包括要字符的字体和内容,条形码的信息还包括条形码的格式和内容。解析单元22获取每条打印信息的具体过程和现有技术的相同,这里不再详述。

在步骤s33,对于每个条形码,计算单元23根据该条形码所在的一行之上的所有行的打印信息和该条形码所在的一行的打印信息,计算该条形码的初始坐标。

字符的信息包括字符的高度和宽度,该高度和宽度与字符的字体相对应。

计算单元23从该条形码所在的一行之上的所有行的打印信息中取出每行的行高,将每行的行高与该条形码所在的一行的打印信息中的行高进行相加,得到初始坐标的纵坐标,并且初始坐标的横坐标是0或该条形码所在的一行的打印信息中的条形码前面的空白宽度或空白宽度与字符的宽度之和。

参见图1,对于在第2行的条形码c1,计算单元23从第1行的打印信息中取出行高,并将该行高与第2行的打印信息中的行高进行相加,得到该条形码c1的初始坐标的纵坐标。本实施例中,例如第1行和第2行的行高分别是2,那么条形码c1的初始坐标的纵坐标y1是4。此外,条形码c1位于第2行的起点,那么条形码c1的初始坐标的横坐标x1是0。也就是说,条形码c1的初始坐标是(0,4)。

同样,如图1所示,对于在例如第25行的条形码c2,计算单元23从第1行到第25行的打印信息中取出每行的行高,并将每行的行高与第25行的打印信息中的行高进行相加,得到该条形码c2的初始坐标的纵坐标。本实施例中,例如第1行到第25行的行高分别是2,那么条形码c2的初始坐标的纵坐标y2是50。此外,条形码c2不是位于第25行的起点,计算单元23将第25行的条形码c2之前的空白宽度或空白宽度与字符的宽度之和作为条形码c2的初始坐标的横坐标。

本例中,第25行的条形码c2之前的空白宽度例如是20,位于条形码c2之前的所有字符的宽度之和为15,那么条形码c2的初始坐标的横坐标x2是20+15,即35。也就是说,条形码c2的初始坐标是(35,50)。这里,条形码的初始坐标是该条形码左下方起点的坐标。

在步骤s34中,确定单元24根据每一行的打印信息,确定该行的第一坐标范围,该第一坐标范围是该行中除了字符以外的坐标范围。

例如,如图1所示,第2行的打印信息中包括条形码c1的信息,没有字符的信息,那么确定单元24就将第1行的坐标范围作为第一坐标范围。本例中,第1行的第一坐标范围例如是(0,0)到(256,0)。另外,第25行的打印信息中包括条形码c2的信息和一些字符的信息,那么确定单元24就将第25行中除了这些字符之外的坐标范围作为该第一坐标范围。例如,第25行中处理字符以外的坐标范围,即,第25行的第一坐标范围是(10,50)到(25,50)以及(30,50)到(256,50)。

此外,如果某一行没有字符的信息和条形码的信息,即,该行是空白的,那么确定单元24就将这一行的坐标范围确定为第一坐标范围。

如此,确定单元24可以确定该打印页面中所有行的第一坐标范围。

接下来,在步骤s35中,判定单元25对于每个条形码,将条形码的初始坐标作为当前坐标,并判定当前坐标是否在第一坐标范围之内并且条形码的高度小于等于条形码所在一行的行高,如果是,则将当前坐标作为条形码的打印坐标,并进入步骤s27,如果否,则进入步骤s26。

条形码所在的一行的行高是该行中字符的最大高度或预定行高。在有字符的一行,取出这些字符中高度最大的一个字符的高度,作为该行的行高;在没有字符的一行,该行的行高是预定行高,例如是2。

例如,对于条形码c1,当前坐标是(0,4),判定单元25判定该当前坐标在上述第一坐标范围(0,0)到(256,0)之内,该条形码c1的高度例如是2,等于第2行的行高2,因此,将当前坐标(0,4)作为条形码c1的打印坐标,并进入步骤c27。

例如,对于条形码c2,当前坐标是(35,50),判定单元25判定该当前坐标在上述第一坐标范围(10,50)到(25,50)以及(30,50)到(256,50)之内,该条形码c2的高度例如是4,并非小于等于第25行的行高2,那么进入步骤s36。

在步骤s26,调整单元26将条形码的初始坐标中的纵坐标或横坐标增加预定量,作为所述条形码的打印坐标,并进入步骤s37。

例如,调整单元26将条形码c2的初始坐标中的纵坐标增加预定量,该预定量例如是5,即c2的初始坐标被调整为(35,55),作为c2的打印坐标,并进入步骤s37。这里,也可以将c2的初始坐标中的横坐标增加预定量,例如是5。

在步骤s37,打印单元27根据每行的条形码的信息以及打印坐标、和/或字符的信息,进行打印。

对于有条形码和字符的一行,打印单元27根据该行的条形码的信息以及该条形码的打印坐标、和字符的信息进行打印。对于只有字符而没有条形码的一行,打印单元27就根据该行的字符的信息进行打印。对于没有字符和条形码的一行,就是空白。打印单元27最终打印的页面如图4所示。

在本说明书中给出的所有数值仅仅是说明性的,而不是用于限定本发明的范围。

虽然经过对本发明结合具体实施例进行描述,对于本领域的技术技术人员而言,根据上文的叙述后作出的许多替代、修改与变化将是显而易见。因此,当这样的替代、修改和变化落入附后的权利要求的精神和范围之内时,应该被包括在本发明中。

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