一种基于PDF页面的拆分和拼页方法

文档序号:28272156发布日期:2021-12-31 19:59阅读:148来源:国知局
一种基于pdf页面的拆分和拼页方法
技术领域
:1.本发明属于图像分析及数据处理
技术领域
:,涉及一种基于pdf页面的拆分和拼页方法。
背景技术
::2.伴随着互联网和数字技术的应用,数字化出版业进入了快车道,在图文快印领域和短版印刷市场中备受青睐。根据2020年度《数字印刷装机量调查报告》显示,在高端彩色数字印刷机和生产型数字印刷机的应用领域中,图文快印领域的占比最大,品质要求高、生产能力强并对成本有要求的图文快印生产中心是引入高端彩色数字印刷设备的绝对主力。其中,出版印刷的占比第二,随着按需出版印刷在出版行业的广泛推行,不少印刷企业或数字印刷企业都采用单张纸高端彩色数字印刷机生产按需出版订单,在出版印刷方向的应用主要以封面为主。3.目前,原稿存储归档多是采用pdf格式保存,pdf(portabledocumentformat,可携带文档格式)文件适合审核、出版、归档阶段使用,主要优点是高保真内容渲染,支持多平台、多媒体,交互性强,安全性高,可使用签名等,且可以打包非结构化和结构化数据。针对此类原稿开发的印前数字化流程的处理软件,国外有柯达(kodak)推出的preps、印能捷(prinergyevo)和爱克发(apogee)推出的prepress等,国内则以北大方正(founder)的方正畅流、方正飞翔等为代表。4.值得注意的是,首先,这些流程软件或系统,侧重于pdf的印刷统一规范化处理和拼版,如检测图像分辨率是否达到印刷要求;文字或元素是否有确实或乱码、采用的是单色黑(灰)还是四色黑(灰);是否根据印刷要求进行排版和拼版等。其次是此类软件的部署和操作对于追求时效的图文快印领域来说可能不够便捷友好。5.按照印刷的呈色模式,数字印刷机可分为单色印刷机(黑白机)和彩色印刷机(彩机)。相同幅面下,单色机的印刷成本大约是彩机的十分之一。在实际生产中,原稿中通常既有彩页也有黑白页。目前大多数数字印刷工艺中,不能自动将彩色部分与黑白部分分离,全部采用彩机印刷,会使成本高昂,而全部使用黑白印刷,则不能满足实际需求,而人工筛选分离费时费力。为解决因彩色页面与黑白页面无法分开印刷而造成的成本问题,实现保证产品观感不变的同时又能控制成本,本发明提供了一种基于pdf页面的拆分和拼页方法。技术实现要素:6.本发明的目的是提供一种基于pdf页面的拆分和拼页方法,本方法能够对pdf文件的页面进行判断和处理,将彩色页面和灰色页面分离;也能根据内建的打印方式和拼页方式将页面重组。7.本发明所采用的技术方案是,一种基于pdf页面的拆分和拼页方法,8.使用内建的拆分和拼页方式进行拆分和拼页,pdf页面的拼页方式包括读取pdf页面、图像转换、灰彩判别、页面分离、合并与拼接;具体按以下步骤实施:9.步骤1,读取pdf文件,获取全部页面并转换为图像数据;10.步骤2,将经步骤1得到的图像数据进行通道分离和像素占比检测,包括计算彩色像素在整个图像上的占比和与标准灰度图像的偏离值,进行页面的灰彩判断;11.步骤3,结合经步骤2得到的灰彩判断结果,根据内建的打印方式和拼页方式选项对页面进行分离与重组;12.步骤4,将经步骤3得到的重组页面传入写入器中,由写入器输出,完成拆分与拼页。13.本发明的特点还在于,14.步骤1具体按照以下方法实施:15.使用pythonpymupdf里面的open和getpixmap方法,使用open算法读取pdf文件,并以页面为对象建立列表;使用getpixmap算法将每个单页页面转换为图像数据。16.步骤2具体按照以下方法实施:17.灰彩判别算法,该算法主要包含两个部分,分别为:18.(1)计算彩色像素总数;即图像中彩色像素点的数量;19.(2)计算彩色像素占比;即在总像素数量上的占比;20.采用灰彩判别算法计算每个图像中彩色像素点的数量和在总像素上的占比,计算方法表示为:[0021][0022][0023][0024]上式中,r、g、b分别表示三个通道的像素矩阵,m、n表示矩阵的大小,x表示对应的灰度矩阵,x表示彩色像素总数,t表示图像中彩色像素的占比;[0025]对x和t,即彩色像素总数与彩色像素的占比做如下计算:[0026][0027][0028]其中,ij表示单一算法下的判别结果;λj表示阈值,阈值λx设为100,彩色占比阈值λt取3.8%;[0029]i表示对两个计算结果的加权平均值取二值化,作为当前页最终的判别结果,判别结果为一个列表t,一般形式为[0,1,0,1,0,0,0,0,1,0...],t中的每个元素与页数一一对应,长度为总页数,0表示当前页灰页,1表示当前页为彩页。[0030]步骤3具体按照以下方法实施[0031]将步骤2得到灰彩判别结果进一步与内建的打印方式和拼页方式对页面进行重组,具体内容包括:[0032]内建的打印方式:基于纸张的正背面,提供“单面打印”和“双面打印”两种选项,择一选择;[0033]内建的拼页方式:提供单本拼和复制拼两种;最终需要输出的文件类型包括单独拼和全拼;[0034]单本拼与复制拼的共同之处在于将两个页面横向拼接为一页,不同之处在于页面的顺序;单本拼将全部页面按页码顺序分为前后两部分,按顺序各取一页横向拼接,得到新页面;复制拼则是将原页面复制,再与被复制页面横向拼接,得到新页面;[0035]单独拼与全拼:为单本拼和复制拼的细化选项;单独拼是只对其中一份文件进行拼页,另一份不拼页,即单独拼灰页、单独拼彩页;全拼即不加以区分;[0036]若为拼页方式为横版,自动更改页面的旋转属性,调整为竖版;[0037]添加空白页:打印方式和拼页方式可自由组合,不同的组合对页数要求不同;若不满足,在末尾自动添加数页空白页,直至总页数符合要求。[0038]步骤3页面调整为竖版的方法为:[0039]获取pdf页面对象含有媒体框和旋转属性的值,媒体框属性值包含了页面的高h和宽w,旋转属性值为页面的旋转度数r,为正值表示顺时针旋转该值,为负表示逆时针旋转;r一般为0,若r不为0,则r必定为90或180的整数倍;[0040]h大于w时:若r为0,不做调整,即原页面保持不变;若r不为0,r取原值的相反数,即原页面反向旋转相同角度;[0041]h小于w时,若r为0,r调整为90,即原页面顺时针旋转90度;若r不为0,r取原值的相反数,再加90,即原页面反向旋转相同角度后再顺时针旋转90度。[0042]步骤3添加空白页的方法为:[0043]空白页的生成由pythonreportlab库的canvas提供,生成的空白页面与原文件页面大小和方向相同,在文件页数不满足打印和拼页要求时,自动在末尾添加空白页;[0044]打印方式为单面,不拼页,无需添加空白页;[0045]打印方式为单面,拼页方式为复制拼,无需添加空白页;[0046]打印方式为单面,拼页方式为单本拼,总页数为奇数时,添加一页空白页;总页数为偶数时,无需添加空白页;[0047]打印方式为双面,不拼页,总页数为奇数时,添加一页空白页;总页数为偶数时,无需添加空白页;[0048]打印方式为双面,拼页方式为复制拼,总页数为奇数时,添加一页空白页;总页数为偶数时,不添加空白页;[0049]打印方式为双面,拼页方式为单本拼,总页数需为四的最小倍数;若不足,添加数页空白页直到满足四的最小倍数。[0050]本发明的有益效果:[0051](1)本发明的拆分算法,并非基于页码输入,而是基于页面内容,即灰/彩色页面进行拆分与合并,灰/彩页判别算法具有很强的鲁棒性和稳定性,保证了拆分效果,整个过程自动完成,省去了人工筛选分离页面的麻烦。[0052](2)本发明还设计了拼页算法,该算法能根据页面总数、打印方式和拼页方式,生成适合直接打印或印刷的拼页文件。[0053](3)本发明目的在于为如图文快印邻域和短板出版印刷市场提供一个由规范化pdf文件到使用黑白印刷和彩色印刷输出的快速便捷的优化过程,图文快印或印刷生产使用该方法,将有助于提升效率、节省时间、降低成本。附图说明[0054]图1是本发明的一种基于pdf页面的拆分和拼页方法的具体流程图。具体实施方式[0055]下面结合附图和具体实施例对本发明进行详细说明。上述所有功能,可以采用任意结合形式形成本公开的可选实施例,在此不再一一赘述。[0056]本技术的说明书和权利要求书及上述和下列中的术语“步骤1”、“步骤2”、“步骤3”等类似描述是用于结合一种比较完备的能够使用到全部功能流程的实施例情况进行说明,不必用于描述特定的先后次序。应该理解这些描述里的部分操作可以单独实施,或先后顺序在适当情况下可以互换,以便这里描述的本技术的实施例例如能够以除了在这里描述的内容意外的顺序实施。[0057]本发明所采用的技术方案为一种基于pdf页面的拆分和拼页方法,如图1所示,具体按照以下步骤实施:[0058]步骤1:首先对pdf文件进行页面解析并转换为图像数据:[0059]解析和转换算法主要是使用pythonpymupdf里面的open和getpixmap算法,open算法负责读取pdf文件,并以页面为对象建立列表;getpixmap算法负责将单页页面转换为图像数据,该方法还提供了转换图像的缩放、旋转和区域裁切等操作。[0060]步骤2具体内容包括:对步骤1得到的图像数据进行灰彩判别,得到判别结果:[0061]灰彩判别算法,原理是基于图像像素在rgb三通道像素矩阵上对应位置的值是否相等,不全相等则为彩色像素;实际中,像素三通道值差异较小时,看起来仍然是灰色的。因此,该算法主要包含两个方面,分别为:[0062](1)计算彩色像素总数;即图像中彩色像素点的数量。[0063](2)计算彩色像素占比;即在总像素数量上的比值。[0064]具体计算公式为:[0065][0066][0067][0068]上式中,r、g、b分别表示三个通道的像素矩阵,m、n表示矩阵的大小,x表示对应的灰度矩阵,x表示彩色像素总数,t表示图像中彩色像素的占比。[0069]对x和t,即彩色像素总数与占比做如下计算:[0070][0071][0072]其中ij表示单方面下的二值化后的判别结果,λj表示阈值,由实验得出,不同的计算方式j所对应的阈值也不同,对于像素总数来说,判断更为严格,阈值λx设为100;彩色占比则相对宽松阈值λt取3.8%;需要说明的是,为了保证灰彩判别算法的有效性,阈值并不局限于上述数值,即在一定条件是可以改变的。[0073]u表示对两个计算结果的加权平均值取二值化,作为该页最终的判别结果。对每个页面做上述计算,得到全部页面的判别结果。判别结果为一个列表t,一般形式为[0,1,0,1,0,0,0,0,1,0...],t中的每个元素与页数一一对应,长度为总页数,0表示该页为灰页,1表示该页为彩页。[0074]步骤3,依据步骤2得到判别结果和内建的打印方式和拼页方式对页面进行重组,具体内容包括:[0075]内建的打印方式和拼页方式,是为了更加符合实际打印输出特点;其中打印方式为必选,基于纸张的正背面,提供“单面打印”和“双面打印”两种选择;拼页方式为非必选,提供“单本拼”和“复制拼”两种;此外,按最终需要输出的文件类型还提供“单独拼”和“全拼”。[0076]“单本拼”与“复制拼”,能将两个页面横向拼接为一页,不同之处在于页面的顺序;单本拼将页面按页码顺序分为前后两部分,按顺序各取一页横向拼接,形成新页面;复制拼则是将原页面复制,再与被复制页面横向拼接,得到新页面。[0077]“单独拼”与“全拼”,是针对输出要求而设计;一般来说,经过处理,输出会得到两份文件,分别用于灰印和彩印,“单独拼”是只对其中一份文件进行拼页,另一份不拼页,例如单独拼灰页、单独拼彩页;“全拼”则不加以区分。[0078]竖版转换:pdf页面对象含有媒体框(/mediabox)和旋转(/rotate)属性,前者用来描述页面的大小(高和宽),后者确定了页面显示方式(横向和纵向),二者共同决定了页面的呈现方式为横版还是竖版。拼页为横向拼接,要求页面为竖版,若为横版,会自动更改旋转属性,调整为纵向。[0079]空白页添加:打印方式和拼页方式可自由组合,不同的组合对页数要求不同;双面打印要求原页面总数为偶数页,若为奇数页,则会在末尾自动添加一页空白页,补足为偶数;双面打印和复制拼组合时,要求原页面总数为4的最小整数倍数,若不足,会在末尾自动补充空白页,将总页数补足为4的最小整数倍。[0080]空白页的生成由pythonreportlab库的canvas提供,生成的空白页面与原文件页面大小和方向相同,在文件页数不满足打印和拼页要求时,自动在末尾补足空白页。[0081]步骤4,将经步骤3得到的拆分和拼页后的页面存储并输出,具体内容包括:[0082]主要用到pythonpdfrw库提供的写入器(pdfwriter)方法写入pdf文件。将经步骤3重组后的页面,分别添加到写入器中,由写入器输出,得到彩印和灰印文件,完成拆分和拼页。[0083]需要说明的是,上述实施例提供的一种基于pdf页面的拆分和拼页方法在实现pdf页面拆分与拼页时,仅以一种情况下的实例对上述各个功能按一定的步骤组合使用进行说明,实际应用中,可以根据需要可将上述部分功能或独立使用,或交换步骤的先后次序使用均可;即可以选择上述的部分或全部功能,例如只进行拆分而不拼页、只进行拼页而不拆分、或先拆分后拼页、先拼页后拆分、拼页后再拼页等。[0084]以上结合附图对本发明进行了实例性描述,本发明具体实现并不受上述方式的限制,凡采用了本发明的方法构思和技术方案进行的各种非实质性的改进;或者未经改进、等同替换,将本发明的上述构思和技术方案直接应用于其他场合的,均在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1