一种PDF文件转版式数据流文件的方法与流程

专利查询2023-5-27  124


一种pdf文件转版式数据流文件的方法
技术领域
1.本发明涉及计算机技术领域,特别涉及一种pdf文件转版式数据流文件的方法。


背景技术:

2.pdf格式是国际上线性的最流行的文件传输格式之一,是由adobe systems 用于与应用程序、操作系统、硬件无关的方式进行文件交换所发展出来的文件格式,并于2008年开放成为国际标准。但是目前pdf技术也存在着一些问题,比如:技术门槛较高、编辑技术复杂、无法动态拆分合并等问题。
3.版式数据流文件是江苏中威科技软件系统有限公司旗下的一款文件软件,中威科技规范了一套标准文档格式体系,在用户界面下集成了版式文件阅读、文件与流数据的交互、表单手写签批三大应用;
4.文件主要基于文件底板自动再造、多级分层结构展示、带笔锋的手写引擎、多文件合并顺捷阅读、签批闭包可追溯,叠批等创新技术。
5.以实现:
6.1、版式软件的阅读体验
7.2、灵活性:又实现了数据的灵活交互,
8.3、多元化:规范化的签批方式,文件支持键盘、手写、图片或音频等多种录入方式混合签批,手写签批底板相互控制解决了单一用户输入内容过多因单元格无法延展占用其他录入区域问题,提高了签批的实用性和适用性;签批内容按一定规则自动排序使得意见签批更加规范化,
9.4、分层排列渲染的方式利于传输,且高内聚低耦合,层级之间互相。
10.5、兼容性:可以在windows、linux、银河麒麟、uos、中科方德、鸿蒙、 ios、安卓等多个不同操作系统上运行。
11.6、稳定性:历经多个主要版本的演进,产品功能丰富,稳定可靠,可高度替代进口的同类软件,且具备诸多创新功能,是一款自主创新的优秀国产文件软件。


技术实现要素:

12.本发明的目的提供一种pdf文件转版式数据流文件的方法,解决上述现有技术问题中的一个或多个。
13.本发明提出一种pdf文件转版式数据流文件的方法,包括:
14.解析pdf版式文件;
15.读取pdf的文件内容,解析获取pdf的页码,放置到一个队列中形成页码队列,分配多个线程,用于并发处理获取每一页的pdf的内容;pdf的内容包括基本对象、对象属性以及其资源对象;
16.基本对象包括文本对象、路径对象、图像对象;路径对象包括直线、矩形、贝塞尔曲线、或其中多个的组合;
17.对象属性包括坐标、宽、高、绘制参数、资源引用路径,资源引用路径为基本对象与资源对象之间的引用路径;
18.资源对象附件、多媒体文件、字体;
19.对pdf的基本对象、对象属性以及其资源对象进行加工处理,按照规则转换其坐标、宽、高,并与版式数据流元素对象结合形成版式数据流文件对象,版式数据流元素对象包括基本对象、绘制参数、资源引用路径、资源对象;
20.根据页码队列创建一个版式数据流文件底板;将版式数据流文件对象填充到版式数据流文件底板中,形成标准版式数据流文件。
21.在一些实施方式中,
22.pdf版式文件的总页码数与版式数据流文件的总页码数相同;
23.pdf版式文件的一页对应一个线程;
24.pdf版式文件的页面与版式数据流文件的页面一一对应。
25.在一些实施方式中,版式数据流文件对象划分为四个数组进行存储,四个数组分别为第一数组、第二数组、第三数组以及第四数组,
26.第一数组用于存储页码和内容对象,内容对象包括基本对象,和基本对象对应的坐标、宽、高;
27.第二数组用于存储绘制参数;
28.第三数组用于存储资源对象;
29.第四数组用于存储引用路径,引用路径中包括资源引用路径和绘制参数引用路径,绘制参数引用路径指基本对象与绘制参数之间的引用路径。
30.在一些实施方式中,将页码和内容对象作为key和value,以《key,value》 键值对方式存储于第一数组中。
31.在一些实施方式中,将id和绘制参数作为key和value,以《key,value》 键值对方式存储于对应的数组中,id从1开始自增长,若数组中已存在相同的绘制参数则不重复添加;若数组中未存在相同的绘制参数则将对应的绘制参数添加入数组中。
32.在一些实施方式中,将id和资源对象作为key和value,以《key,value》 键值对方式存储于对应的数组中,id从1开始自增长,获取资源文件的hash值,若数组中已存在hash值相同的资源对象则表示已存在,不重复添加;若数组中未存在hash值相同的资源对象则将对应的资源对象添加入数组中。
33.在一些实施方式中,将id和引用路径作为key和value,以《key,value》 键值对方式存储于对应的数组中,id从1开始自增长,若数组中已存在相同的引用路径则不重复添加;若数组中未存在相同的引用路径则将对应的资源引用路径添加入数组中。
34.在一些实施方式中,转换坐标、宽、高指的是将解析pdf版式文件获取的坐标、宽、高转换为基于1024点的坐标、宽、高。
35.在一些实施方式中,解析pdf版式文件获取pdf版式文件的页面宽度width,
36.解析pdf版式文件获取对象对应的坐标、宽、高分别为(x,y)、w、h,
37.转换后的坐标、宽、高分别为(x1,y1)、w1、h1,
38.坐标、宽、高的转换规则为:
39.scale=width/1024;
40.x1=x*scale,y1=y*scale;
41.w1=w*scale;
42.h1=h*scale。
43.在一些实施方式中,pdf版式文件包括且不仅限于纯文本型pdf版式文件、文本加图片混合型pdf版式文件和纯图片型pdf版式文件。
44.本发明所述的pdf文件转版式数据流文件的方法的优点为:
45.1、直接利用pdf的数据进行原版原样转换,转换方法简单;
46.2、将pdf元素对象分成存储与不同数组中的pdf对象、资源对象以及资源路径,采用引用的方式进行调用,有效的去除冗余元素,保证了文件的转换速度;
47.3、利用多线程并发处理获取每一页的pdf对象和对象属性,以key、value 键值对的方式进行数据存储,便于检索、解析以及渲染;
48.4、利用多线程并发处理获取每一页的pdf对象和对象属性,坐标、宽、高与绘制参数分离,实现异步加载,提高了加载速度,易于整体维护;
49.5、通过位置转换使得同一内容在pdf版式文件中的位置与版式数据流文件中的位置对应,使得转换前便可预见转换后的页面效果;
50.6、将pdf版式文件转换为版式数据流文件能够使得文件具有版式数据流文件的特性:
51.内容可编辑,层级清晰,可读性强;
52.既有版式文件的展示,又与数据流结合,签批时,可以根据实际需要进行局部区域的数据填充与延展;
53.更开放(与其他文件更易于融合),易于维护、转换。
附图说明
54.图1为本发明的一些实施方式中pdf文件转版式数据流文件的方法的流程图;
55.图2为本发明的版式数据流文件框架元素示意图;
56.图3为本发明的一些实施方式中生成的版式数据流文件的目录结构。
具体实施方式
57.结合图1所示的内容,本发明的一些实施方式中提出一种pdf文件转版式数据流文件的方法包括如下步骤:
58.s1、读取pdf版式文件;
59.s2、读取pdf的文件内容,解析获取pdf的页码,放置到一个队列中形成页码队列,以pdf页面左上角为原点,分配多个线程,用于并发处理获取每一页的pdf的内容,pdf版式文件的一页对应一个线程;pdf的内容包括基本对象、对象属性以及其资源对象;
60.基本对象包括文本对象、路径对象、图像对象;
61.对象属性包括坐标、宽、高、绘制参数、资源引用路径,资源引用路径为基本对象与资源对象之间的引用路径;
62.资源对象附件、多媒体文件、字体;
63.绘制参数包括但不仅限于线条连接样式、线框、虚线样式(默认从0开始)、虚线线
条重复样式(虚线宽度,间隔宽度)、线端点样式、填充颜色、勾边颜色、粗体、斜体、是否等宽字形、内嵌字形字体、字体是否填充、填充颜色、字体是否勾边、勾边颜色、粗细值、图像边框水平角半径、图像边框竖直角半径、图像边框样式(通上面线条宽,颜色,勾边填充、虚线),其中颜色包含(基本色,底纹填充、径向渐变、轴向渐变、高洛德渐变),资源引用路径为pdf对象与pdf资源对象之间的引用路径,pdf资源对象包括附件、视频、字体;
64.文本对象包括但不仅限于文字、文字标点、文字分隔符号、项目符号、数字、公式或其中多种组合;
65.路径对象包括直线、矩形、贝塞尔曲线、或其中多个的组合形成的任意形状;
66.图像对象包括图像和视频;
67.s3、将pdf的对象属性中的坐标、宽、高转换为基于1024点的坐标、宽、高,设获取pdf版式文件的页面宽度width,
68.解析pdf版式文件获取对象对应的坐标、宽、高分别为(x,y)、w、h,
69.转换后的坐标、宽、高分别为(x1,y1)、w1、h1,
70.坐标、宽、高转换为基于1024点的坐标、宽、高的转换规则为:
71.scale=width/1024;
72.x1=x*scale,y1=y*scale;
73.w1=w*scale;
74.h1=h*scale;
75.将转换后的坐标、宽、高与版式数据流元素对象结合形成版式数据流文件对象,版式数据流元素对象包括基本对象、绘制参数、引用路径、资源对象,引用路径中包括资源引用路径和绘制参数引用路径,绘制参数引用路径指基本对象与绘制参数之间的引用路径;
76.s4、生成空的数组,数组包括pagelist数组、drawparmlist数组、reslist 数组以及pathlist数组,
77.pagelist数组用于存储页码和内容对象,内容对象包括基本对象,和基本对象对应的坐标、宽、高;
78.drawparmlist数组用于存储绘制参数;
79.reslist数组用于存储资源对象;
80.pathlist数组用于存储引用路径;
81.s5、存储版式数据流文件对象具体操作如下:
82.存储pdf对象,将页码和内容对象作为page和pdfpageobj,以《key,value》 键值对方式将《page,pdfpageobj》放入pagelist数组中;
83.存储绘制参数,将id和绘制参数作为key和value,以《key,value》键值对方式存储于drawparmlist数组中,id从1开始自增长,若数组中已存在相同的绘制参数则不重复添加;若数组中未存在相同的绘制参数则将对应的绘制参数添加入drawparmlist数组中;
84.存储资源对象,将id和资源对象作为id和resources,以《key,value》 键值对方式《id,resources》的形式放入reslist数组中,id从1开始自增长,获取资源文件的hash值,若数组中已存在hash值相同的资源对象则表示已存在,不重复添加;若数组中未存在hash值相同的资源对象则将对应的资源对象添加入数组中,利用hash值具有更好的去重效果,因为有些实际上相同,只是名字不一样;
85.生成版式数据流对象属性中的资源引用路径,其为内容对象与资源对象之间的引用路径,存储版式数据流对象属性中的资源引用路径,将id和资源引用路径作为id和path,以《key,value》键值对方式《id,path》的形式放入pathlist 数组中,id从1开始自增长,若数组中已存在相同的引用关系则不重复添加;若数组中未存在相同的引用关系则将对应的资源引用路径添加入数组中;
86.示例:
87.某一pdf版式文件,
88.第一页:标题内容为开发协议(字体20号,正楷,加粗),详细介绍开发协议的内容(字体16号,宋体),其中第一页还有标记(横线,红色,线框5);
89.第二页:标题代理协议(字体20号,正楷,加粗),详细介绍代理协议内容 (字体16号,宋体),其中第二页还有标记(横线,红色,线框5),第三页还是代理协议内容(字体16号,宋体),标记(波浪线,黄色,线框5);
90.转换时生成pagelist数组、drawparmlist数组、reslist数组以及pathlist 数组;
91.第一页生成版式数据流文件对象obj,obj里包含textobj1每个文字的对象,生成绘制对象drawparm1(id1,20号,正楷,加粗),判断reslist数组是否存在,如果不存在放入reslist数组;生成font1(id2,正楷,路径)判断 pathlist数组中是否存在,不存在添加到pathlist数组。textobj1引用drawparm1,font1;textobj2每个正文对象,生成绘制对象drawparm2(id2,16 号,宋体),判断reslist数组是否存在,如果不存在放入reslist数组;生成 font2(id2,宋体,路径)判断pathlist数组中是否存在,不存在添加到pathlist 数组;遍历到标记,pathobj1(线条起始点),绘制对象drawparm3(id3,横线,红色,线框5),pathobj1引用drawparm3。第二页同理,引用的时候采取id引用。
92.s6、根据页码队列创建一个版式数据流文件底板,版式数据流文件底板的总页码数与pdf版式文件的总页码数相等,版式数据流文件底板上的原点与pdf 版式文件的页面上的原点一致,均在页面的左上角;
93.s7、结合图2所示的内容,按照版式数据流文件的标准,将版式数据流文件对象填充到版式数据流文件底板中,比如:结合图3所示的内容,将pagelist 写入文件contents内容中:
94.[0095][0096]
每一页内容写在pages目录下,和contents里的path相对应,将资源对象拷贝至resources目录下;
[0097]
s8、打包生成标准版式数据流文件。
[0098]
s3与s4可以同步执行。
[0099]
按照上述方法生成的版式数据流文件页面内容与pdf版式文件的页面内容一一对应。
[0100]
一些实施方式中,pdf版式文件转版式数据流文件的系统包括存储介质和处理器,存储介质用于存储程序代码以及pdf文件转版式数据流文件的方法执行过程中需要存储的数据,处理器用于执行程序代码实现上述pdf文件转版式数据流文件的方法。
[0101]
上述pdf版式文件包括且不仅限于纯文本型pdf版式文件、文本加图片混合型pdf版式文件和纯图片型pdf版式文件。
[0102]
通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出若干相似的变形和改进,这些也应视为本发明的保护范围之。

技术特征:
1.一种pdf文件转版式数据流文件的方法,其特征在于,包括:解析pdf版式文件;读取pdf的文件内容,解析获取pdf的页码,放置到一个队列中形成页码队列,分配多个线程,用于并发处理获取每一页的pdf的内容;pdf的内容包括基本对象、对象属性以及其资源对象;基本对象包括文本对象、路径对象、图像对象;路径对象包括直线、矩形、贝塞尔曲线、或其中多个的组合;对象属性包括坐标、宽、高、绘制参数、资源引用路径,资源引用路径为基本对象与资源对象之间的引用路径;资源对象附件、多媒体文件、字体;对pdf的基本对象、对象属性以及其资源对象进行加工处理,按照规则转换其坐标、宽、高,并与版式数据流元素对象结合形成版式数据流文件对象,版式数据流元素对象包括基本对象、绘制参数、资源引用路径、资源对象;根据页码队列创建一个版式数据流文件底板;将版式数据流文件对象填充到版式数据流文件底板中,形成标准版式数据流文件。2.根据权利要求1所述的一种pdf文件转版式数据流文件的方法,其中,pdf版式文件的总页码数与版式数据流文件的总页码数相同;pdf版式文件的一页对应一个线程;pdf版式文件的页面与版式数据流文件的页面一一对应。3.根据权利要求1所述的一种pdf文件转版式数据流文件的方法,其中,版式数据流文件对象划分为四个数组进行存储,四个数组分别为第一数组、第二数组、第三数组以及第四数组,第一数组用于存储页码和内容对象,内容对象包括基本对象,和基本对象对应的坐标、宽、高;第二数组用于存储绘制参数;第三数组用于存储资源对象;第四数组用于存储引用路径,引用路径中包括资源引用路径和绘制参数引用路径,绘制参数引用路径指基本对象与绘制参数之间的引用路径。4.根据权利要求3所述的一种pdf文件转版式数据流文件的方法,其中,将页码和内容对象作为key和value,以<key,value>键值对方式存储于第一数组中。5.根据权利要求3所述的一种pdf文件转版式数据流文件的方法,其中,将id和绘制参数作为key和value,以<key,value>键值对方式存储于对应的数组中,id从1开始自增长,若数组中已存在相同的绘制参数则不重复添加;若数组中未存在相同的绘制参数则将对应的绘制参数添加入数组中。6.根据权利要求3所述的一种pdf文件转版式数据流文件的方法,其中,将id和资源对象作为key和value,以<key,value>键值对方式存储于对应的数组中,id从1开始自增长,获取资源文件的hash值,若数组中已存在hash值相同的资源对象则表示已存在,不重复添加;若数组中未存在hash值相同的资源对象则将对应的资源对象添加入数组中。7.根据权利要求3所述的一种pdf文件转版式数据流文件的方法,其中,将id和引用路
径作为key和value,以<key,value>键值对方式存储于对应的数组中,id从1开始自增长,若数组中已存在相同的引用路径则不重复添加;若数组中未存在相同的引用路径则将对应的引用路径添加入数组中。8.根据权利要求1所述的一种pdf文件转版式数据流文件的方法,其中,转换坐标、宽、高指的是将解析pdf版式文件获取的坐标、宽、高转换为基于1024点的坐标、宽、高。9.根据权利要求8所述的一种pdf文件转版式数据流文件的方法,其中,解析pdf版式文件获取pdf版式文件的页面宽度width,解析pdf版式文件获取对象对应的坐标、宽、高分别为(x,y)、w、h,转换后的坐标、宽、高分别为(x1,y1)、w1、h1,坐标、宽、高的转换规则为:scale=width/1024;x1=x*scale,y1=y*scale;w1=w*scale;h1=h*scale。10.根据权利要求1至9中的任一端所述的一种pdf文件转版式数据流文件的方法,其中,pdf版式文件包括且不仅限于纯文本型pdf版式文件、文本加图片混合型pdf版式文件和纯图片型pdf版式文件。

技术总结
本发明公开了一种PDF文件转版式数据流文件的方法包括解析pdf版式文件;读取pdf的文件内容,解析获取pdf的页码,分配多个线程,并发处理解析pdf的内容;pdf的内容包括基本对象、对象属性以及其资源对象;对pdf的各类对象进行加工处理,并转换对象属性中的坐标、宽、高,并与版式数据流元素对象结合形成版式数据流文件对象,版式数据流元素对象包括基本对象、绘制参数、资源引用路径、资源对象;创建版式数据流文件底板;将版式数据流文件对象填充到版式数据流文件底板中,形成标准版式数据流文件。本发明叙述的方法实现了pdf文件向版式数据流文件原版原样的转换,具有转换方法简单,采用引用的方式进行调用,去除冗余元素,保证了文件的转换速度的优点。了文件的转换速度的优点。了文件的转换速度的优点。


技术研发人员:何冉冉 何中 顾志平 蔡亚军 严伟
受保护的技术使用者:江苏中威科技软件系统有限公司
技术研发日:2021.12.02
技术公布日:2022/3/8

最新回复(0)