CN108399054A - 一种文档切分打印方法 - Google Patents
一种文档切分打印方法 Download PDFInfo
- Publication number
- CN108399054A CN108399054A CN201810170566.7A CN201810170566A CN108399054A CN 108399054 A CN108399054 A CN 108399054A CN 201810170566 A CN201810170566 A CN 201810170566A CN 108399054 A CN108399054 A CN 108399054A
- Authority
- CN
- China
- Prior art keywords
- rectangular shaped
- document
- shaped rim
- printed
- page
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1237—Print job management
- G06F3/125—Page layout or assigning input pages onto output media, e.g. imposition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1202—Dedicated interfaces to print systems specifically adapted to achieve a particular effect
- G06F3/1203—Improving or facilitating administration, e.g. print management
- G06F3/1208—Improving or facilitating administration, e.g. print management resulting in improved quality of the output result, e.g. print layout, colours, workflows, print preview
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Record Information Processing For Printing (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明涉及一种文档切分打印方法,包括:确定当前打印纸张和待打印文档P的尺寸,初始化待打印文档P的起始位置和终止位置;根据待打印文档P与当前打印纸张的尺寸大小关系,分别来判断是否需要对打印文档P进行垂直切分和水平切分;对于切分后得到的垂直分页和水平分页,该方法还包括切页复制处理;该方法还支持对具有多个表格的单页文档进行多表分页打印;此外,该方法还包括行高自适应处理以及表格自动补齐功能;采用该方法进行文档打印,不仅能够避免单元格被切断和数据丢失问题,而且能够使打印出来的文档更加美观。
Description
技术领域
本发明涉及电子文档的打印技术领域,具体涉及一种文档切分打印方法。
背景技术
在人们的日常生活和工作中常常需要打印电子文档,文档的尺寸大小往往 不同。例如,医院病历危重护理单需要使用A3或更大纸张进行数据记录,而 A3打印纸和A3打印机对医院来说都需要消耗额外的费用。如果能够将A3或 者更大尺寸的文档利用常见的A4打印机打印出来,将大大方便用户的使用和 降低用户的打印成本。
现有技术中的Excel软件虽然具有纸张横向和纵向切分打印功能,但是 Excel只是按照纸张的横向和纵向尺寸生硬的进行切分打印,常常会造成文档中 的单元格切断;而且,Excel不支持在单页文档具有多个表格情况下按表切分打 印功能;此外,Excel打印文档,要求人为事先的将文档数据调整好,否则会造 成数据丢失。
现有技术中的FastReport报表打印控件,不支持无干预垂直方向上的切分 功能,即当表格的列数宽度大于纸张宽度时,大于纸张宽度的内容将无法打印 显示;此外,FastReport也不支持在单页文档具有多表格情况下的纸张切分。
发明内容
有鉴于此,本发明的目的在于克服现有技术的不足,提供一种文档切分打 印方法,该方法能够根据被打印文档以及打印纸张的尺寸自动进行切分打印, 并且能够支持对具有多个表格的单页文档进行多表分页打印,此外,该方法还 具有行高自适应功能,表格自动补齐修复功能,以提高打印文档的美观。
为实现以上目的,本发明采用如下技术方案:一种文档切分打印方法,包 括:
步骤S1:确定当前打印纸张和待打印文档P的尺寸,初始化待打印文档P 的起始位置和终止位置;
步骤S2:判断待打印文档P数据的宽度是否大于当前打印纸张的宽度,如 果是,执行步骤S3,否则执行步骤S5;
步骤S3:对待打印文档P进行垂直切分,得到待打印文档P1、P2……Pn, 并获取待打印文档P1、P2……Pn水平方向偏移量;
步骤S4:分别判断待打印文档P1、P2……Pn数据的高度是否大于当前打印 纸张的高度,如果是,执行步骤S6,否则执行步骤S8;
步骤S5:判断待打印文档P数据的高度是否大于当前打印纸张的高度,如 果是,执行步骤S7,否则执行步骤S8;
步骤S6:分别对待打印文档P1、P2……Pn进行水平切分,得到待打印文档 P11、P12……P1m、P21、P22……P2m、……Pn1、Pn2……Pnm,并获取待打印文档 P11、P12……P1m、P21、P22……P2m、……Pn1、Pn2……Pnm垂直方向偏移量,执行 步骤S8;
步骤S7:对待打印文档P进行水平切分,得到待打印文档Q1、Q2……Qm, 并获取待打印文档Q1、Q2……Qn垂直方向偏移量;
步骤S8:根据获取的数据正式打印文档页面。
可选的,所述步骤S3中对待打印文档P进行垂直切分,包括:对表格的 切分,具体处理过程为:
以矩形边框为最小单位,将待打印文档看成由多个矩形边框组成,矩形边 框的边线可以隐藏和显示,其中,每个矩形边框的左上角起点的横、纵坐标值 对应为该矩形边框的横坐标和纵坐标;
找到表格的所有列的列头,利用
b+x+width>w; 公式(1)
判断第p列的矩形边框是否被切分到下一页;
其中,b表示待打印文档P页面的数据区域与打印机左侧边框的距离;
x表示第p列矩形边框的横坐标;
width表示第p列矩形边框的宽度;
w表示当前打印纸张可打印边框的最大宽度;
上述p的取值依次为1、2、……、j;j的初始值为表格的总列数;
如果公式(1)不成立,则说明第p列不超宽,第p列的矩形边框为非超宽 项目,则将非超宽项目放置到当前页的数据集合中;
如果公式(1)成立,则说明第p列以及第p列以后的矩形边框为超宽项目, 则将超宽项目放置到下一页数据集合中,并且j=j-(p-1);
按上述规则再次检测下一页数据集合中的各列是否超宽,并对超宽项目进 行切分,直至无超宽项目。
可选的,所述步骤S3中获取待打印文档P1、P2……Pn水平方向偏移量, 具体的处理过程为:
所述待打印文档P1为垂直切分得到的第一个文档,所述待打印文档P1水平 方向偏移量为矩形边框的横坐标值;
所述待打印文档P2……Pn水平方向偏移量分别为:
待打印文档P2……Pn内的矩形边框的横坐标值减去该页数据集合中矩形边 框横坐标的最小值。
可选的,所述对待打印文档P进行垂直切分后,还包括对切分得到的垂直 分页进行右侧补齐,具体的处理过程为:
判断所述垂直分页是否能够完全填充整个纸张的右侧部分;
如果能,则进一步判断所述垂直分页的最后一列矩形边框是否全部对齐, 如果不是全部对齐,则需要获取每一行的最后一个矩形边框的横坐标和宽度, 计算每一行的最后一个矩形边框的横坐标与宽度之和,并将该和进行递减排序, 得到最大值和非最大值,并按照
width’=xmax+widthmax-x; 公式(2)
对所有非最大值对应的矩形边框进行补齐;
其中,width’表示补齐后非最大值对应的矩形边框的宽度;
xmax表示最大值对应的矩形边框的横坐标;
widthmax表示最大值对应的矩形边框的宽度;
x表示非最大值对应的矩形边框的横坐标;
如果垂直分页不能够完全填充整个纸张的右侧部分,则需要获取垂直分页 每一行的最后一个矩形边框的横坐标和宽度,通过
widthlast=w-xlast-k; 公式(3)
对每一行的最后一个矩形边框进行处理,使得每一行的最后一个矩形边框 填充整个纸张;
其中,widthlast表示补齐后最后一个矩形边框的宽度;
w表示纸张可打印边框的宽度;
xlast表示最后一个矩形边框的横坐标;
k表示边界预留值。
可选的,所述步骤S6和步骤S7中对待打印文档进行水平切分,包括:对 表格的切分,具体处理过程为:
以矩形边框为最小单位,将待打印文档看成由多个矩形边框组成,矩形边 框的边线可以隐藏和显示,其中,每个矩形边框的左上角起点的横、纵坐标值 对应为该矩形边框的横坐标和纵坐标;
利用
e+y+height>h; 公式(4)
判断第q行的矩形边框是否被切分到下一页;
其中,e表示待打印文档页面的数据区域与打印机上侧边框的距离;
y表示第q行矩形边框的纵坐标;
height表示第q行矩形边框的高度;
h表示当前打印纸张可打印边框的最大高度;
上述q的取值依次为1、2、……、i;i的初始值为表格的总行数;
如果公式(4)不成立,则说明第q行不超高,第q行的矩形边框为非超高 项目,则将非超高项目放置到当前页的数据集合中;
如果公式(4)成立,则说明第q行以及第q行以后的矩形边框为超高项目, 则将超高项目放置到下一页数据集合中,并且i=i-(q-1);
按上述规则再次检测下一页数据集合中的各行是否超高,并对超高项目进 行切分直至无超高项目。
可选的,所述步骤S6和步骤S7中获取待打印文档垂直方向偏移量,具体 的处理过程为:
所述待打印文档P11、P21……、Pn1和Q1均为水平切分得到的第一个文档, 所述待打印文档P11、P21……、Pn1和Q1的垂直方向偏移量分别为各自文档内的 矩形边框的纵坐标值;
所述待打印文档P12……P1m、P22……P2m、……、Pn2……Pnm和Q2……Qn的垂直方向偏移量分别为:
待打印文档P12……P1m、P22……P2m、……、Pn2……Pnm和Q2……Qn矩形 边框的纵坐标值减去该页数据集合中矩形边框纵坐标的最小值。
可选的,所述步骤S6和步骤S7中对待打印文档进行水平切分后,还包括 对切分得到的水平分页进行下侧补齐,具体的处理过程为:
判断所述水平分页是否能够完全填充整个纸张的下侧部分;
如果不能,则需要获取表格的第一行,并制作出空行模板;
获取水平分页最后一行矩形边框的纵坐标ylast和行高hlast,如果:
ylast+hlast+h0<height; 公式(5)
则填充一个空行,并将填充的空行作为最后一行,继续按照公式(5)操作,
直至不满足条件,从而实现对水平分页的下侧补齐;
其中,ylast表示最后一行矩形边框的纵坐标;
hlast表示最后一行矩形边框的行高;
h0表示1个空行的行高;
height表示纸张可打印边框的高度。
可选的,在执行步骤S8之前,所述文档切分打印方法还包括:切页复制处 理;
所述切页复制处理包括:垂直切页复制处理和水平切页复制处理;
其中,所述步骤S3中垂直切分得到的待打印文档页面为垂直分页;所述垂 直切页复制处理的步骤为:
判断垂直分页中的每一个矩形边框是否需要在其它垂直分页中复制,如果 需要,则将该矩形边框中的垂直复制属性VCOPY置1;所述待打印文档页中 的矩形边框中的垂直复制属性VCOPY默认初始值为零;
获取当前待打印文档页的数据集合中所有VCOPY置1的项目,并将对应 的矩形边框的横纵坐标、宽度和高度添加到其它垂直分页的数据集合中;
所述步骤S6和步骤S7中水平切分得到的待打印文档页面为水平分页;所 述水平切页复制处理的步骤为:
判断水平分页中的每一个矩形边框是否需要在其它水平分页中复制,如果 需要,则将该矩形边框中的水平复制属性HCOPY置1;所述待打印文档页中 的矩形边框中的水平复制属性HCOPY默认初始值为零;
获取当前待打印文档页的数据集合中所有HCOPY置1的项目,并将对应 的矩形边框的横纵坐标、宽度和高度添加到其它水平分页的数据集合中。
可选的,该方法还包括对具有多个表格的单页文档进行多表分页打印处理, 包括如下步骤:
步骤S01:查看单页文档中共存在表格的个数,设置打印纸张内每个表格 的总高度和总列数;确定单页文档中每一个矩形边框所归属于哪一个表格,记 为Title,Title的取值为矩形边框所归属表格对应的编号;
步骤S02:按照Title对单页文档中的矩形边框进行按表分组,通过Title 属性找到所归属表格以及属于同一个表格的所有矩形边框;
步骤S03:属于同一个表格的所有矩形边框被装载在一个数据集合中,该 数据集合以每一个矩形边框为一个元素,每个矩形边框具有横纵坐标、宽度、 高度以及所归属于哪一个表格的属性;
步骤S04:对于属于同一个表格内的所有矩形边框,从第一行矩形边框开 始,逐行将每一行矩形边框的纵坐标与表格的总高度进行比较;
如果该行矩形边框的纵坐标与该行矩形边框的高度之和大于表格总高度, 则将该行矩形边框放置到下一页的数据集合中;否则,将该行矩形边框放置到 当前页的数据集合中;
步骤S05:按照步骤S04对下一页的数据集合进行分页;
步骤S06:重复执行步骤S05~步骤S06,直至将所有数据打印完成,实现 对具有多个表格的单页文档进行多表分页打印。
可选的,所述文档切分打印方法还包括行高自适应处理,处理过程为:
查找到高度大于表格默认行高的矩形边框;
查找到所述矩形边框所在行的其它所有矩形边框;
查找到该行所有矩形边框的高度的最大值;
将该行所有矩形边框的高度设置为所述最大值。
本发明采用以上技术方案,所述文档切分打印方法包括:确定当前打印纸 张和待打印文档P的尺寸,初始化待打印文档P的起始位置和终止位置;根据 待打印文档P与当前打印纸张的尺寸大小关系,分别来判断是否需要对打印文 档P进行垂直切分和水平切分;对于切分后得到的垂直分页和水平分页,该方 法还包括切页复制处理;该方法还支持对具有多个表格的单页文档进行多表分 页打印;此外,该方法还包括行高自适应处理以及表格自动补齐功能;采用该 方法进行文档打印,不仅能够避免单元格被切断和数据丢失问题,而且能够使 打印出来的文档更加美观。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施 例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述 中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付 出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明文档切分打印方法的流程示意图;
图2是本发明实施例一进行垂直切分和水平切分处理后的示意图;
图3是本发明中对垂直分页进行右侧补齐的流程示意图;
图4是本发明中对水平分页进行下侧补齐的流程示意图;
图5是本发明中对多表分页打印处理的流程示意图;
图6是本发明实施例二进行多表分页打印处理后的示意图;
图7是本发明实施例三进行切分处理后的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方 案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不 是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创 造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
如图1所示,本发明提供了一种文档切分打印方法,包括:
步骤S1:确定当前打印纸张和待打印文档P的尺寸,初始化待打印文档P 的起始位置和终止位置;
步骤S2:判断待打印文档P数据的宽度是否大于当前打印纸张的宽度,如 果是,执行步骤S3,否则执行步骤S5;
步骤S3:对待打印文档P进行垂直切分,得到待打印文档P1、P2……Pn, 并获取待打印文档P1、P2……Pn水平方向偏移量;
步骤S4:分别判断待打印文档P1、P2……Pn数据的高度是否大于当前打印 纸张的高度,如果是,执行步骤S6,否则执行步骤S8;
步骤S5:判断待打印文档P数据的高度是否大于当前打印纸张的高度,如 果是,执行步骤S7,否则执行步骤S8;
步骤S6:分别对待打印文档P1、P2……Pn进行水平切分,得到待打印文档 P11、P12……P1m、P21、P22……P2m、……Pn1、Pn2……Pnm,并获取待打印文档 P11、P12……P1m、P21、P22……P2m、……Pn1、Pn2……Pnm垂直方向偏移量,执行 步骤S8;
步骤S7:对待打印文档P进行水平切分,得到待打印文档Q1、Q2……Qm, 并获取待打印文档Q1、Q2……Qn垂直方向偏移量;
步骤S8:根据获取的数据正式打印文档页面。所述获取的数据是指每一个 待打印页的数据集合。
进一步的,所述步骤S3中对待打印文档P进行垂直切分,包括:对表格 的切分,具体处理过程为:
以矩形边框为最小单位,将待打印文档看成由多个矩形边框组成,矩形边 框的边线可以隐藏和显示,其中,每个矩形边框的左上角起点的横、纵坐标值 对应为该矩形边框的横坐标和纵坐标;
找到表格的所有列的列头,利用
b+x+width>w; 公式(1)
判断第p列的矩形边框是否被切分到下一页;
其中,b表示待打印文档P页面的数据区域与打印机左侧边框的距离;
x表示第p列矩形边框的横坐标;
width表示第p列矩形边框的宽度;
w表示当前打印纸张可打印边框的最大宽度;
上述p的取值依次为1、2、……、j;j的初始值为表格的总列数;
如果公式(1)不成立,则说明第p列不超宽,第p列的矩形边框为非超宽 项目,则将非超宽项目放置到当前页的数据集合中;
如果公式(1)成立,则说明第p列以及第p列以后的矩形边框为超宽项目, 则将超宽项目放置到下一页数据集合中,并且j=j-(p-1);
按上述规则再次检测下一页数据集合中的各列是否超宽,并对超宽项目进 行切分,直至无超宽项目。
具体的,所述步骤S3中获取待打印文档P1、P2……Pn水平方向偏移量, 具体的处理过程为:
所述待打印文档P1为垂直切分得到的第一个文档,所述待打印文档P1水平 方向偏移量为矩形边框的横坐标值;
所述待打印文档P2……Pn水平方向偏移量分别为:
待打印文档P2……Pn内的矩形边框的横坐标值减去该页数据集合中矩形边 框横坐标的最小值。
需要说明的是,所述步骤S6和步骤S7中对待打印文档进行水平切分,包 括:对表格的切分,具体处理过程为:
以矩形边框为最小单位,将待打印文档看成由多个矩形边框组成,矩形边 框的边线可以隐藏和显示,其中,每个矩形边框的左上角起点的横、纵坐标值 对应为该矩形边框的横坐标和纵坐标;
利用
e+y+height>h; 公式(4)
判断第q行的矩形边框是否被切分到下一页;
其中,e表示待打印文档页面的数据区域与打印机上侧边框的距离;
y表示第q行矩形边框的纵坐标;
height表示第q行矩形边框的高度;
h表示当前打印纸张可打印边框的最大高度;
上述q的取值依次为1、2、……、i;i的初始值为表格的总行数;
如果公式(4)不成立,则说明第q行不超高,第q行的矩形边框为非超高 项目,则将非超高项目放置到当前页的数据集合中;
如果公式(4)成立,则说明第q行以及第q行以后的矩形边框为超高项目, 则将超高项目放置到下一页数据集合中,并且i=i-(q-1);
按上述规则再次检测下一页数据集合中的各行是否超高,并对超高项目进 行切分直至无超高项目。
可以理解的是,所述步骤S6和步骤S7中获取待打印文档垂直方向偏移量, 具体的处理过程为:
所述待打印文档P11、P21……、Pn1和Q1均为水平切分得到的第一个文档, 所述待打印文档P11、P21……、Pn1和Q1的垂直方向偏移量分别为各自文档内的 矩形边框的纵坐标值;
所述待打印文档P12……P1m、P22……P2m、……、Pn2……Pnm和Q2……Qn的垂直方向偏移量分别为:
待打印文档P12……P1m、P22……P2m、……、Pn2……Pnm和Q2……Qn矩形 边框的纵坐标值减去该页数据集合中矩形边框纵坐标的最小值。
需要补充说明的是,在执行步骤S8之前,所述文档切分打印方法还包括: 切页复制处理;
所述切页复制处理包括:垂直切页复制处理和水平切页复制处理;
其中,所述步骤S3中垂直切分得到的待打印文档页面为垂直分页;所述垂 直切页复制处理的步骤为:
判断垂直分页中的每一个矩形边框是否需要在其它垂直分页中复制,如果 需要,则将该矩形边框中的垂直复制属性VCOPY置1;所述待打印文档页中 的矩形边框中的垂直复制属性VCOPY默认初始值为零;
获取当前待打印文档页的数据集合中所有VCOPY置1的项目,并将对应 的矩形边框的横纵坐标、宽度和高度添加到其它垂直分页的数据集合中;
所述步骤S6和步骤S7中水平切分得到的待打印文档页面为水平分页;所 述水平切页复制处理的步骤为:
判断水平分页中的每一个矩形边框是否需要在其它水平分页中复制,如果 需要,则将该矩形边框中的水平复制属性HCOPY置1;所述待打印文档页中 的矩形边框中的水平复制属性HCOPY默认初始值为零;
获取当前待打印文档页的数据集合中所有HCOPY置1的项目,并将对应 的矩形边框的横纵坐标、宽度和高度添加到其它水平分页的数据集合中。
在实际应用中,以图2作为实施例一进行说明,图2(a)表示待打印文档P, 图2(b)表示对待打印文档P进行垂直切分处理后的示意图,垂直切分处理后, 待打印文档P被切分为垂直分页P1和P2;图2(c)表示分别对垂直分页P1和P2进行水平切分处理后的示意图,水平切分处理后,待打印文档P被切分为P11、 P12、P21和P22。
如图3所示,所述对待打印文档P进行垂直切分后,还包括对切分得到的 垂直分页进行右侧补齐,具体的处理过程为:
判断所述垂直分页是否能够完全填充整个纸张的右侧部分;
如果能(如图2(b)中的垂直分页P1),则进一步判断所述垂直分页的最后 一列矩形边框是否全部对齐,如果不是全部对齐,则需要获取每一行的最后一 个矩形边框的横坐标和宽度,计算每一行的最后一个矩形边框的横坐标与宽度 之和,并将该和进行递减排序,得到最大值和非最大值,并按照
width’=xmax+widthmax-x; 公式(2)
对所有非最大值对应的矩形边框进行补齐;
其中,width’表示补齐后非最大值对应的矩形边框的宽度;
xmax表示最大值对应的矩形边框的横坐标;
widthmax表示最大值对应的矩形边框的宽度;
x表示非最大值对应的矩形边框的横坐标;
如果垂直分页不能够完全填充整个纸张的右侧部分(如图2(b)中的垂直分 页P2),则需要获取垂直分页每一行的最后一个矩形边框的横坐标和宽度,通 过
widthlast=w-xlast-k; 公式(3)
对每一行的最后一个矩形边框进行处理,使得每一行的最后一个矩形边框 填充整个纸张;
其中,widthlast表示补齐后最后一个矩形边框的宽度;
w表示纸张可打印边框的宽度;
xlast表示最后一个矩形边框的横坐标;
k表示边界预留值。
如图4所示,所述步骤S6和步骤S7中对待打印文档进行水平切分后,还 包括对切分得到的水平分页进行下侧补齐,具体的处理过程为:
判断所述水平分页是否能够完全填充整个纸张的下侧部分;
如果不能(如图2(c)中的水平分页P12和P22),则需要获取表格的第一行, 并制作出空行模板;
获取水平分页最后一行矩形边框的纵坐标ylast和行高hlast,如果:
ylast+hlast+h0<height; 公式(5)
则填充一个空行,并将填充的空行作为最后一行,继续按照公式(5)操作,
直至不满足条件,从而实现对水平分页的下侧补齐;
其中,ylast表示最后一行矩形边框的纵坐标;
hlast表示最后一行矩形边框的行高;
h0表示1个空行的行高;
height表示纸张可打印边框的高度。
通过对水平分页进行下侧补齐,能够使每一个页面中的表格高度都是相同 的,实现页面中如果有数据则显示数据行,如果无数据则使用空行填充的效果, 以提高打印页面的美观。
如图2(d)所示,表示对分页P11、P12、P21和P22进行切页复制处理后,以及 右侧补齐和下侧补齐处理后的示意图。
如图5所示,该方法还包括对具有多个表格的单页文档进行多表分页打印 处理,包括如下步骤:
步骤S01:查看单页文档中共存在表格的个数,设置打印纸张内每个表格 的总高度和总列数;确定单页文档中每一个矩形边框所归属于哪一个表格,记 为Title,Title的取值为矩形边框所归属表格对应的编号;
步骤S02:按照Title对单页文档中的矩形边框进行按表分组,通过Title 属性找到所归属表格以及属于同一个表格的所有矩形边框;
步骤S03:属于同一个表格的所有矩形边框被装载在一个数据集合中,该 数据集合以每一个矩形边框为一个元素,每个矩形边框具有横纵坐标、宽度、 高度以及所归属于哪一个表格的属性;
步骤S04:对于属于同一个表格内的所有矩形边框,从第一行矩形边框开 始,逐行将每一行矩形边框的纵坐标与表格的总高度进行比较;
如果该行矩形边框的纵坐标与该行矩形边框的高度之和大于表格总高度, 则将该行矩形边框放置到下一页的数据集合中;否则,将该行矩形边框放置到 当前页的数据集合中;
步骤S05:按照步骤S04对下一页的数据集合进行分页;
步骤S06:重复执行步骤S05~步骤S06,直至将所有数据打印完成,实现 对具有多个表格的单页文档进行多表分页打印。
作为本发明实施例二,如图6所示,通过多表分页打印处理后的打印效果 为图6(a)和图6(b),在待打印单页文档中共有1、2、3三个表格,表1包括一 行表头和16行数据行,表2包括一行表头和10行数据行,表3包括一行表头 和28行数据行;按照步骤S01中设置的打印纸张内每个表格的总高度和总列数, 在一页打印纸张中表1可有一行表头和15行数据行,表2可有一行表头和9 行数据行,表3可有一行表头和18行数据行;
经过多表分页打印后,表1中的第1~15行、表2中的第1~9行和表3中 的第1~18行被打印在第一页纸张中;表1中的第16行、表2中的第10行和表 3中的第19~28行被打印在第二页纸张中;
图6(a)和图6(b)中每一页完全相同的矩形方框,包括图标,被定义为复制 项;复制项会被添加到每一页的数据集合中,并且复制项目的横坐标和纵坐标 不需要计算和改变,即可以方便快捷的显示到指定位置。
作为本发明实施例三,如图7所示,图7(a)为待打印文档P,待打印文档P 是一张医院病历危重护理单,宽度和高度都超过了当前打印纸张的尺寸,经过 本发明所述的切分打印方法处理后,得到图7(b1)~图7(b4)四张打印文档。
需要进一步补充说明的是,所述文档切分打印方法还包括行高自适应处理, 处理过程为:
查找到高度大于表格默认行高的矩形边框;
查找到所述矩形边框所在行的其它所有矩形边框;
查找到该行所有矩形边框的高度的最大值;
将该行所有矩形边框的高度设置为所述最大值。
本发明采用以上技术方案,能够根据待打印文档和当前打印纸张的尺寸关 系,对待打印文档进行垂直切分和水平切分;对于切分后得到的垂直分页和水 平分页,该方法还包括切页复制处理;该方法还支持对具有多个表格的单页文 档进行多表分页打印;此外,该方法还包括行高自适应处理以及表格自动补齐 功能;采用该方法进行文档打印,不仅能够避免单元格被切断和数据丢失问题, 而且能够使打印出来的文档更加美观。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于 此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到 变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应 以所述权利要求的保护范围为准。
Claims (10)
1.一种文档切分打印方法,其特征在于,包括:
步骤S1:确定当前打印纸张和待打印文档P的尺寸,初始化待打印文档P的起始位置和终止位置;
步骤S2:判断待打印文档P数据的宽度是否大于当前打印纸张的宽度,如果是,执行步骤S3,否则执行步骤S5;
步骤S3:对待打印文档P进行垂直切分,得到待打印文档P1、P2……Pn,并获取待打印文档P1、P2……Pn水平方向偏移量;
步骤S4:分别判断待打印文档P1、P2……Pn数据的高度是否大于当前打印纸张的高度,如果是,执行步骤S6,否则执行步骤S8;
步骤S5:判断待打印文档P数据的高度是否大于当前打印纸张的高度,如果是,执行步骤S7,否则执行步骤S8;
步骤S6:分别对待打印文档P1、P2……Pn进行水平切分,得到待打印文档P11、P12……P1m、P21、P22……P2m、……Pn1、Pn2……Pnm,并获取待打印文档P11、P12……P1m、P21、P22……P2m、……Pn1、Pn2……Pnm垂直方向偏移量,执行步骤S8;
步骤S7:对待打印文档P进行水平切分,得到待打印文档Q1、Q2……Qm,并获取待打印文档Q1、Q2……Qn垂直方向偏移量;
步骤S8:根据获取的数据正式打印文档页面。
2.根据权利要求1所述的文档切分打印方法,其特征在于,所述步骤S3中对待打印文档P进行垂直切分,包括:对表格的切分,具体处理过程为:
以矩形边框为最小单位,将待打印文档看成由多个矩形边框组成,矩形边框的边线可以隐藏和显示,其中,每个矩形边框的左上角起点的横、纵坐标值对应为该矩形边框的横坐标和纵坐标;
找到表格的所有列的列头,利用
b+x+width>w; 公式(1)
判断第p列的矩形边框是否被切分到下一页;
其中,b表示待打印文档P页面的数据区域与打印机左侧边框的距离;
x表示第p列矩形边框的横坐标;
width表示第p列矩形边框的宽度;
w表示当前打印纸张可打印边框的最大宽度;
上述p的取值依次为1、2、……、j;j的初始值为表格的总列数;
如果公式(1)不成立,则说明第p列不超宽,第p列的矩形边框为非超宽项目,则将非超宽项目放置到当前页的数据集合中;
如果公式(1)成立,则说明第p列以及第p列以后的矩形边框为超宽项目,则将超宽项目放置到下一页数据集合中,并且j=j-(p-1);
按上述规则再次检测下一页数据集合中的各列是否超宽,并对超宽项目进行切分,直至无超宽项目。
3.根据权利要求2所述的文档切分打印方法,其特征在于,所述步骤S3中获取待打印文档P1、P2……Pn水平方向偏移量,具体的处理过程为:
所述待打印文档P1为垂直切分得到的第一个文档,所述待打印文档P1水平方向偏移量为矩形边框的横坐标值;
所述待打印文档P2……Pn水平方向偏移量分别为:
待打印文档P2……Pn内的矩形边框的横坐标值减去该页数据集合中矩形边框横坐标的最小值。
4.根据权利要求2所述的文档切分打印方法,其特征在于,所述对待打印文档P进行垂直切分后,还包括对切分得到的垂直分页进行右侧补齐,具体的处理过程为:
判断所述垂直分页是否能够完全填充整个纸张的右侧部分;
如果能,则进一步判断所述垂直分页的最后一列矩形边框是否全部对齐,如果不是全部对齐,则需要获取每一行的最后一个矩形边框的横坐标和宽度,计算每一行的最后一个矩形边框的横坐标与宽度之和,并将该和进行递减排序,得到最大值和非最大值,并按照
width’=xmax+widthmax-x; 公式(2)
对所有非最大值对应的矩形边框进行补齐;
其中,width’表示补齐后非最大值对应的矩形边框的宽度;
xmax表示最大值对应的矩形边框的横坐标;
widthmax表示最大值对应的矩形边框的宽度;
x表示非最大值对应的矩形边框的横坐标;
如果垂直分页不能够完全填充整个纸张的右侧部分,则需要获取垂直分页每一行的最后一个矩形边框的横坐标和宽度,通过
widthlast=w-xlast-k; 公式(3)
对每一行的最后一个矩形边框进行处理,使得每一行的最后一个矩形边框填充整个纸张;
其中,widthlast表示补齐后最后一个矩形边框的宽度;
w表示纸张可打印边框的宽度;
xlast表示最后一个矩形边框的横坐标;
k表示边界预留值。
5.根据权利要求1所述的文档切分打印方法,其特征在于,所述步骤S6和步骤S7中对待打印文档进行水平切分,包括:对表格的切分,具体处理过程为:
以矩形边框为最小单位,将待打印文档看成由多个矩形边框组成,矩形边框的边线可以隐藏和显示,其中,每个矩形边框的左上角起点的横、纵坐标值对应为该矩形边框的横坐标和纵坐标;
利用
e+y+height>h; 公式(4)
判断第q行的矩形边框是否被切分到下一页;
其中,e表示待打印文档页面的数据区域与打印机上侧边框的距离;
y表示第q行矩形边框的纵坐标;
height表示第q行矩形边框的高度;
h表示当前打印纸张可打印边框的最大高度;
上述q的取值依次为1、2、……、i;i的初始值为表格的总行数;
如果公式(4)不成立,则说明第q行不超高,第q行的矩形边框为非超高项目,则将非超高项目放置到当前页的数据集合中;
如果公式(4)成立,则说明第q行以及第q行以后的矩形边框为超高项目,则将超高项目放置到下一页数据集合中,并且i=i-(q-1);
按上述规则再次检测下一页数据集合中的各行是否超高,并对超高项目进行切分直至无超高项目。
6.根据权利要求5所述的文档切分打印方法,其特征在于,所述步骤S6和步骤S7中获取待打印文档垂直方向偏移量,具体的处理过程为:
所述待打印文档P11、P21……、Pn1和Q1均为水平切分得到的第一个文档,所述待打印文档P11、P21……、Pn1和Q1的垂直方向偏移量分别为各自文档内的矩形边框的纵坐标值;
所述待打印文档P12……P1m、P22……P2m、……、Pn2……Pnm和Q2……Qn的垂直方向偏移量分别为:
待打印文档P12……P1m、P22……P2m、……、Pn2……Pnm和Q2……Qn矩形边框的纵坐标值减去该页数据集合中矩形边框纵坐标的最小值。
7.根据权利要求5所述的文档切分打印方法,其特征在于,所述步骤S6和步骤S7中对待打印文档进行水平切分后,还包括对切分得到的水平分页进行下侧补齐,具体的处理过程为:
判断所述水平分页是否能够完全填充整个纸张的下侧部分;
如果不能,则需要获取表格的第一行,并制作出空行模板;
获取水平分页最后一行矩形边框的纵坐标ylast和行高hlast,如果:
ylast+hlast+h0<height; 公式(5)
则填充一个空行,并将填充的空行作为最后一行,继续按照公式(5)操作,直至不满足条件,从而实现对水平分页的下侧补齐;
其中,ylast表示最后一行矩形边框的纵坐标;
hlast表示最后一行矩形边框的行高;
h0表示1个空行的行高;
height表示纸张可打印边框的高度。
8.根据权利要求2至7任一项所述的文档切分打印方法,其特征在于,在执行步骤S8之前,所述文档切分打印方法还包括:切页复制处理;
所述切页复制处理包括:垂直切页复制处理和水平切页复制处理;
其中,所述步骤S3中垂直切分得到的待打印文档页面为垂直分页;所述垂直切页复制处理的步骤为:
判断垂直分页中的每一个矩形边框是否需要在其它垂直分页中复制,如果需要,则将该矩形边框中的垂直复制属性VCOPY置1;所述待打印文档页中的矩形边框中的垂直复制属性VCOPY默认初始值为零;
获取当前待打印文档页的数据集合中所有VCOPY置1的项目,并将对应的矩形边框的横纵坐标、宽度和高度添加到其它垂直分页的数据集合中;
所述步骤S6和步骤S7中水平切分得到的待打印文档页面为水平分页;所述水平切页复制处理的步骤为:
判断水平分页中的每一个矩形边框是否需要在其它水平分页中复制,如果需要,则将该矩形边框中的水平复制属性HCOPY置1;所述待打印文档页中的矩形边框中的水平复制属性HCOPY默认初始值为零;
获取当前待打印文档页的数据集合中所有HCOPY置1的项目,并将对应的矩形边框的横纵坐标、宽度和高度添加到其它水平分页的数据集合中。
9.根据权利要求2至7任一项所述的文档切分打印方法,其特征在于,该方法还包括对具有多个表格的单页文档进行多表分页打印处理,包括如下步骤:
步骤S01:查看单页文档中共存在表格的个数,设置打印纸张内每个表格的总高度和总列数;确定单页文档中每一个矩形边框所归属于哪一个表格,记为Title,Title的取值为矩形边框所归属表格对应的编号;
步骤S02:按照Title对单页文档中的矩形边框进行按表分组,通过Title属性找到所归属表格以及属于同一个表格的所有矩形边框;
步骤S03:属于同一个表格的所有矩形边框被装载在一个数据集合中,该数据集合以每一个矩形边框为一个元素,每个矩形边框具有横纵坐标、宽度、高度以及所归属于哪一个表格的属性;
步骤S04:对于属于同一个表格内的所有矩形边框,从第一行矩形边框开始,逐行将每一行矩形边框的纵坐标与表格的总高度进行比较;
如果该行矩形边框的纵坐标与该行矩形边框的高度之和大于表格总高度,则将该行矩形边框放置到下一页的数据集合中;否则,将该行矩形边框放置到当前页的数据集合中;
步骤S05:按照步骤S04对下一页的数据集合进行分页;
步骤S06:重复执行步骤S05~步骤S06,直至将所有数据打印完成,实现对具有多个表格的单页文档进行多表分页打印。
10.根据权利要求2至7任一项所述的文档切分打印方法,其特征在于,所述文档切分打印方法还包括行高自适应处理,处理过程为:
查找到高度大于表格默认行高的矩形边框;
查找到所述矩形边框所在行的其它所有矩形边框;
查找到该行所有矩形边框的高度的最大值;
将该行所有矩形边框的高度设置为所述最大值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810170566.7A CN108399054B (zh) | 2018-02-28 | 2018-02-28 | 一种文档切分打印方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810170566.7A CN108399054B (zh) | 2018-02-28 | 2018-02-28 | 一种文档切分打印方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108399054A true CN108399054A (zh) | 2018-08-14 |
CN108399054B CN108399054B (zh) | 2021-08-06 |
Family
ID=63091431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810170566.7A Active CN108399054B (zh) | 2018-02-28 | 2018-02-28 | 一种文档切分打印方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108399054B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109324771A (zh) * | 2018-10-26 | 2019-02-12 | 苏州浪潮智能软件有限公司 | 一种基于html解析技术的自助回单机智能分页打印技术 |
CN109829147A (zh) * | 2019-01-31 | 2019-05-31 | 恒生电子股份有限公司 | 报表导出方法及装置 |
CN111240609A (zh) * | 2020-01-03 | 2020-06-05 | 北京辰森世纪科技股份有限公司 | 一种数据打印方法、装置、电子设备及存储介质 |
CN114661255A (zh) * | 2022-05-18 | 2022-06-24 | 江苏中威科技软件系统有限公司 | 支持矢量手写及图片的动态表单分页打印的方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1645954A2 (en) * | 2004-10-08 | 2006-04-12 | Böwe Bell + Howell Company | Multi-print stream processing module optimizer for document processing |
CN1801074A (zh) * | 2004-12-31 | 2006-07-12 | 东友科技股份有限公司 | 打印文件的分页方法 |
CN101187850A (zh) * | 2006-11-16 | 2008-05-28 | 北京书生国际信息技术有限公司 | 一种电子文档分页打印方法 |
JP2009220970A (ja) * | 2008-03-18 | 2009-10-01 | Ricoh Co Ltd | シート断裁装置、画像形成システム、シート断裁制御方法、シート断裁制御プログラム及び記録媒体 |
CN102883085A (zh) * | 2011-07-12 | 2013-01-16 | 富士施乐株式会社 | 图像处理装置和图像处理方法 |
CN103617012A (zh) * | 2013-12-05 | 2014-03-05 | 用友软件股份有限公司 | 报表打印方法 |
CN104571978A (zh) * | 2015-01-09 | 2015-04-29 | 中科宇图天下科技有限公司 | 一种基于html标签进行文档分页打印的方法 |
JP5939510B2 (ja) * | 2012-09-24 | 2016-06-22 | ブラザー工業株式会社 | 画像データ処理プログラム及び印刷装置 |
-
2018
- 2018-02-28 CN CN201810170566.7A patent/CN108399054B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1645954A2 (en) * | 2004-10-08 | 2006-04-12 | Böwe Bell + Howell Company | Multi-print stream processing module optimizer for document processing |
CN1801074A (zh) * | 2004-12-31 | 2006-07-12 | 东友科技股份有限公司 | 打印文件的分页方法 |
CN101187850A (zh) * | 2006-11-16 | 2008-05-28 | 北京书生国际信息技术有限公司 | 一种电子文档分页打印方法 |
JP2009220970A (ja) * | 2008-03-18 | 2009-10-01 | Ricoh Co Ltd | シート断裁装置、画像形成システム、シート断裁制御方法、シート断裁制御プログラム及び記録媒体 |
CN102883085A (zh) * | 2011-07-12 | 2013-01-16 | 富士施乐株式会社 | 图像处理装置和图像处理方法 |
JP5939510B2 (ja) * | 2012-09-24 | 2016-06-22 | ブラザー工業株式会社 | 画像データ処理プログラム及び印刷装置 |
CN103617012A (zh) * | 2013-12-05 | 2014-03-05 | 用友软件股份有限公司 | 报表打印方法 |
CN104571978A (zh) * | 2015-01-09 | 2015-04-29 | 中科宇图天下科技有限公司 | 一种基于html标签进行文档分页打印的方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109324771A (zh) * | 2018-10-26 | 2019-02-12 | 苏州浪潮智能软件有限公司 | 一种基于html解析技术的自助回单机智能分页打印技术 |
CN109829147A (zh) * | 2019-01-31 | 2019-05-31 | 恒生电子股份有限公司 | 报表导出方法及装置 |
CN109829147B (zh) * | 2019-01-31 | 2023-06-30 | 恒生电子股份有限公司 | 报表导出方法及装置 |
CN111240609A (zh) * | 2020-01-03 | 2020-06-05 | 北京辰森世纪科技股份有限公司 | 一种数据打印方法、装置、电子设备及存储介质 |
CN114661255A (zh) * | 2022-05-18 | 2022-06-24 | 江苏中威科技软件系统有限公司 | 支持矢量手写及图片的动态表单分页打印的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108399054B (zh) | 2021-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108399054A (zh) | 一种文档切分打印方法 | |
TW399179B (en) | Method and apparatus for compressing slice-oriented bitmaps | |
WO2008066142A1 (fr) | Système de fabrication d'un imprimé, système de réseaux utilisant celui-ci, et procédé de fabrication d'un imprimé | |
CN104275928B (zh) | 单张纸印刷开纸裁纸方法 | |
CN102467353B (zh) | 单据打印方法及计算机 | |
CN102541478A (zh) | 拆页方法和装置 | |
CN102442047B (zh) | 用于拼版的标记处理方法和装置 | |
CN204719736U (zh) | 一种病程记录续打印装置 | |
CN206926387U (zh) | 一种可应用于不同设备型号的印刷底座 | |
CN102141899B (zh) | 图像处理装置和图像处理方法 | |
CN217730100U (zh) | 格线绘制排尺 | |
CN205563637U (zh) | 信息卡 | |
JPS6292877A (ja) | 印字装置 | |
CN103377181A (zh) | 排版方法和排版设备 | |
CN109144437A (zh) | 一种优化印刷拼版方法 | |
CN1330504C (zh) | 海报文件打印方法及所打印的海报文件 | |
CN201317163Y (zh) | 打印机进纸槽进纸显示结构 | |
CN210501657U (zh) | 一种圣诞树形产品折纸结构 | |
CN205871193U (zh) | 一种医疗3d打印设备 | |
JP3723873B2 (ja) | 新聞紙面上の箱自動作成装置 | |
CN206699658U (zh) | 一种使用方便的学生用文具盒 | |
JPH04182153A (ja) | テーププリンタ | |
JPH0339259Y2 (zh) | ||
TWI239473B (en) | Poster document printing method and associated poster document | |
CN109643223A (zh) | 信息处理装置、打印控制程序以及打印控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |