一种基于浏览器的PDF文件解析方法、系统、存储介质与流程

文档序号:30882256发布日期:2022-07-26 21:24阅读:199来源:国知局
一种基于浏览器的pdf文件解析方法、系统、存储介质
技术领域
:1.本发明涉及pdf文件解析领域,具体指有一种基于浏览器的pdf文件解析方法、系统、存储介质。
背景技术
::2.pdf是portabledocumentformat的简称,意为“可携带文档格式”,是由adobesystems用于与应用程序、操作系统、硬件无关的方式进行文件交换所发展出的文件格式。pdf文件以postscript语言图象模型为基础,无论在哪种打印机上都可保证精确的颜色和准确的打印效果,即pdf会忠实地再现原稿的每一个字符、颜色以及图象。3.为了读取或解析pdf文件,常规的手段是安装pdf阅读软件,然后再用该软件打开对应的pdf文件,这样的方法局限于客户端的环境,在一些性能配置较为低下的电脑环境中难以顺畅运行,且当切换到另一台没有安装相应软件的电脑上,就无法打开pdf格式的文件。而浏览器是每台终端基本上必备的程序,现有浏览器并没有解析pdf文件的功能实现。4.针对上述的现有技术存在的问题设计一种基于浏览器的pdf文件解析方法、系统、存储介质是本发明研究的目的。技术实现要素:5.针对上述现有技术存在的问题,本发明在于提供一种基于浏览器的pdf文件解析方法、系统、存储介质,能够有效解决上述现有技术存在的问题。6.本发明的技术方案是:7.一种基于浏览器的pdf文件解析方法,包括以下步骤:8.加载并解析pdf文件,得到与所述pdf文件相关联的描述文本;9.根据pdf格式规则,从所述描述文本中提取所述pdf文件的交叉引用表,根据所述交叉引用表解析出所述pdf文件的若干对象数据;10.查找并读取所述对象数据,根据所述对象数据的位置信息和/或大小信息组成内容元素;11.根据所述浏览器的渲染规则将所述内容元素中相应的内容转换为以超文本标记语言html+层叠样式表css格式描述的文档对象模型dom节点;12.通过浏览器根据以超文本标记语言html+层叠样式表css格式描述的文档对象模型dom节点渲染得到所述pdf文件对应呈现的内容。13.进一步地,所述加载并解析pdf文件,得到与所述pdf文件相关联的描述文本包括:14.通过浏览器加载所述pdf文件,调用所述浏览器的filereader.readasstring接口解析所述pdf文件,得到与所述pdf文件相关联的描述文本。15.进一步地,所述对象数据至少包含图片元素、矢量元素、文本元素其中的一种或多种。16.进一步地,若所述对象数据包括图片元素,所述根据所述浏览器的渲染规则将所述内容元素中相应的内容转换为以超文本标记语言html+层叠样式表css格式描述的文档对象模型dom节点包括:17.利用所述浏览器的canvasrenderingcontext2d.putimagedata接口将所述图片元素绘制在所述浏览器的htmlcanvaselement画布上,并调用所述浏览器的htmlcanvaselemen.todataurl接口得到所述图片元素的统一资源定位符url;18.将所述url转换为以html描述的所述dom节点的节点类型,以及将所述图片元素中的图片属性转换为css格式的描述内容。19.进一步地,若所述对象数据包括文本元素和/或矢量元素,所述将所述内容元素中相应的内容转换为以超文本标记语言html+层叠样式表css格式描述的文档对象模型dom节点包括:20.将文本元素和/或矢量元素对应的元素类型转换为以html描述的所述dom节点的节点类型,以及将文本元素和/或矢量元素中的信息属性转换为css格式的描述内容。21.进一步地,所述查找并读取所述对象数据包括:22.根据所述交叉引用表读取所述对象数据的元素id,根据所述元素id查找并读取所述对象数据。23.进一步地,所述根据所述对象数据的位置信息和/或大小信息组成内容元素包括:24.若所述对象数据包含字体,则读取所述字体,将所述字体与其他所述对象数据组成内容元素。25.进一步地,所述通过浏览器根据以超文本标记语言html+层叠样式表css格式描述的文档对象模型dom节点渲染得到所述pdf文件对应呈现的内容包括:26.调用所述浏览器的htmlelement.appendchild功能,将所述dom节点渲染到所述浏览器的页面,得到所述pdf文件对应呈现的内容。27.一种基于浏览器的pdf文件解析系统,包括以下模块:28.描述文本获取模块,用于加载并解析pdf文件,得到与所述pdf文件相关联的描述文本;29.对象数据解析模块,用于根据pdf格式规则,从所述描述文本中提取所述pdf文件的交叉引用表,根据所述交叉引用表解析出所述pdf文件的若干对象数据;30.内容元素构建模块,用于查找并读取所述对象数据,根据所述对象数据的位置信息和/或大小信息组成内容元素;31.网页格式转换模块,用于根据所述浏览器的渲染规则将所述内容元素中相应的内容转换为以超文本标记语言html+层叠样式表css格式描述的文档对象模型dom节点;32.渲染模块,用于通过浏览器根据以超文本标记语言html+层叠样式表css格式描述的文档对象模型dom节点渲染得到所述pdf文件对应呈现的内容。33.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现所述的一种基于浏览器的pdf文件解析方法。34.因此,本发明提供以下的效果和/或优点:35.本技术通过解析所述pdf文件相关联的描述文本得到交叉引用表,再通过交叉引用表解析得到pdf文件所包含的对象数据,最后将对象数据通过以超文本标记语言html+层叠样式表css格式描述的文档对象模型dom节点进行转换,从而导入到浏览器中可以得到pdf文件对应呈现的内容。从而无需pdf阅读软件即可浏览pdf文件。本发明可以使用户脱离相关软件,只要有浏览器,即可做到浏览pdf文件。本方案通过在浏览器环境对pdf文件进行处理,直接输出对应的html结构,交由浏览器进行渲染,可以省掉安装软件的麻烦,也能更好的夸设备、跨平台,只要有浏览器的设备(手机、pad等均可),都能打开。36.本技术对pdf对象数据中的不同内容采用不同的转换策略,利用所述浏览器的canvasrenderingcontext2d.putimagedata接口将所述图片元素绘制在所述浏览器的htmlcanvaselement画布上,并调用所述浏览器的htmlcanvaselemen.todataurl接口得到所述图片元素的统一资源定位符url;将所述url转换为以html描述的所述dom节点的节点类型,以及将所述图片元素中的图片属性转换为css格式的描述内容。而对于文字或者矢量图形,将文本元素和/或矢量元素对应的元素类型转换为以html描述的所述dom节点的节点类型,以及将文本元素和/或矢量元素中的信息属性转换为css格式的描述内容。可以转换得到相应的浏览器可以渲染并识别的格式内容。37.应当明白,本发明的上文的概述和下面的详细说明是示例性和解释性的,并且意在提供对如要求保护的本发明的进一步的解释。附图说明38.图1为本发明的流程示意图。39.图2-3为pdf文件结构的示意图。40.图4为待解析的pdf文件用pdf阅读器的呈现效果图。41.图5为canvasrenderingcontext2d.putimagedata接口绘制的效果图。42.图6为本发明的浏览器处理过程示意图。具体实施方式43.为了便于本领域技术人员理解,现将实施例结合附图对本发明作进一步详细描述:应了解到,在本实施例中所提及的步骤,除特别说明其顺序的,均可依实际需要调整其前后顺序,甚至可同时或部分同时执行,44.参考图1或6,一种基于浏览器的pdf文件解析方法,包括以下步骤:45.s1,加载并解析pdf文件,得到与所述pdf文件相关联的描述文本;46.本实施例中,pdf文件是portabledocumentformat的简称,意为“可携带文档格式”,是由adobesystems用于与应用程序、操作系统、硬件无关的方式进行文件交换所发展出的文件格式。pdf文件以postscript语言图象模型为基础,无论在哪种打印机上都可保证精确的颜色和准确的打印效果,即pdf会忠实地再现原稿的每一个字符、颜色以及图象。同时,pdf文件包含了描述文本,其包括了pdf文件的文件头信息,文件体,交叉引用表和文件尾。47.s2,根据pdf格式规则,从所述描述文本中提取所述pdf文件的交叉引用表,根据所述交叉引用表解析出所述pdf文件的若干对象数据;48.在步骤s1中,我们获取到了描述文本,参考图2-3,其包括了pdf文件的文件头信息,文件体,交叉引用表和文件尾。此时,提取出描述文本的交叉引用表。pdf交叉引用表是pdf文件的重要部分,该表保存了所有简介对象在pdf文件中物理偏移地址,包含文件中间接对象信息。通常,交叉引用表以单词“xref”开头。交叉引用表的目的是允许随机访问文件中的对象,因此我们不需要读取整个pdf文档来定位特定对象。49.本步骤提取交叉引用表后,即可根据pdf格式规则从pdf文件中解析得到若干对象数据。50.具体地,所述对象数据至少包含图片元素、矢量元素、文本元素其中的一种或多种。具体可以参考下列示例:51.文件头信息示例:52.%pdf-1.453.字体信息示例:54.70obj55.<<56./type/font57./subtype/type158./name/f159./basefont/helvetica60.>>61.endobj62.画板信息示例:63.40obj64.<<65./type/page66./parent30r67./resources<</font<</f170r>>/procset60r>>68./mediabox612792.69./contents50r70.>>71.endobj72.元素信息示例:73.50obj74.<</length44>>75.stream76.bt77./f124tf78.100100td(helloworld)tj79.et80.endstream81.endobj82.为了匹配对象数据内不同元素的内容、参数等实际情况,本技术可以对不同的对象数据采用不同的策略进行需步骤。83.s3,查找并读取所述对象数据,根据所述对象数据的位置信息和/或大小信息组成内容元素;84.在步骤s2中,我们获取到了对象数据,本步骤我们进一步从对象数据中查找到对象数据中具体的内容,一份pdf文件包含了对象数据中的图片、文字等信息,还包括了对这些图片、字体的摆放位置、大小等信息,从而在pdf阅读软件打开时能够根据这些信息重新构成一个页面并展示给用户。因此,对象数据中的图片、文字等信息,还包括了对这些图片、字体的摆放位置、大小等信息属于浏览器需要获取并解析的重要内容。例如图4所示的pdf文件,其包括了一张空白的背景作为图形图层、一张小于背景的猫图片作为图片、一行“我是一只猫”的文字作为文字。85.然后,本步骤将这些信息和画板信息组织的位置对应,画板信息是用于确定最终显示出来的图像多大、元素在图像上的位置,通过本步骤可以组成一个完整的内容元素。86.s4,根据所述浏览器的渲染规则将所述内容元素中相应的内容转换为以超文本标记语言html+层叠样式表css格式描述的文档对象模型dom节点;87.具体地,s4.1,若所述对象数据包括图片元素,所述根据所述浏览器的渲染规则将所述内容元素中相应的内容转换为以超文本标记语言html+层叠样式表css格式描述的文档对象模型dom节点包括:88.利用所述浏览器的canvasrenderingcontext2d.putimagedata接口将所述图片元素绘制在所述浏览器的htmlcanvaselement画布上,并调用所述浏览器的htmlcanvaselemen.todataurl接口得到所述图片元素的统一资源定位符url;89.将所述url转换为以html描述的所述dom节点的节点类型,以及将所述图片元素中的图片属性转换为css格式的描述内容。90.本步骤中,canvasrenderingcontext2d.putimagedata是canvas2dapi将数据从已有的imagedata对象绘制到位图的方法。例如可以在浏览器中设置图片的绘制区域、绘制路径、绘制样式等。例如参考图5,可以通过canvasrenderingcontext2d.putimagedata接口绘制一个如图5所示的包含宽度为w、高度为h的矩形、线、数字等。htmlcanvaselement接口提供用于操纵<canvas>元素的布局和表示的属性和方法。通过91.canvasrenderingcontext2d.putimagedata接口可以在htmlcanvaselement画布上,根据图层列表的画布大小等信息画出一个对应的矩形,该矩形用于填充相应的图层进来。92.htmlcanvaselemen.todataurl接口是用于返回一个包含图片展示的datauri。可以使用type参数其类型,默认为png格式。本步骤中通过将上述步骤解析得到的图片通过htmlcanvaselemen.todataurl接口得到与该图片相对应的url。该url地址作为后续的图片地址被浏览器调用,从而能够使浏览器读取到对应的图片。93.通过调用浏览器的canvasrenderingcontext2d.putimagedata把像素数据绘制到htmlcanvaselement画布上,然后再调用htmlcanvaselement.todataurl,获取到图片地址(base64url)。94.本步骤中,图4中的图片转换得到的图片转换成对应的dom节点是:95.<imgsrc=”图片地址”/>96.对应的css样式是:[0097][0098]s4.2,若所述对象数据包括文本元素和/或矢量元素,所述将所述内容元素中相应的内容转换为以超文本标记语言html+层叠样式表css格式描述的文档对象模型dom节点包括:[0099]将文本元素和/或矢量元素对应的元素类型转换为以html描述的所述dom节点的节点类型,以及将文本元素和/或矢量元素中的信息属性转换为css格式的描述内容。[0100]本步骤中,文本元素和/或矢量元素可以在浏览器中直接转换,对于文字元素,直接调用浏览器的document.createelement接口创建一个span的html元素,将文字内容填入span元素内即可,在加入文字对应带的css样式,调整文字的大小、字体、颜色等属性。对于矢量元素,也可以通过浏览器中绘制画布的接口直接绘制一个相应的图形,例如矩形,根据图层列表中的信息,调整该矩形的大小、变形等参数,得到对应的css样式。[0101]例如,本步骤中,图4中的文字转换成对应的dom节点是:[0102]<span>我是一只猫</span>[0103]对应的css样式是:[0104][0105]s5,通过浏览器根据以超文本标记语言html+层叠样式表css格式描述的文档对象模型dom节点渲染得到所述pdf文件对应呈现的内容。[0106]进一步地,所述通过浏览器根据以超文本标记语言html+层叠样式表css格式描述的文档对象模型dom节点渲染得到所述pdf文件对应呈现的内容包括:[0107]调用所述浏览器的htmlelement.appendchild功能,将所述dom节点渲染到所述浏览器的页面,得到所述pdf文件对应呈现的内容。[0108]htmlelement.appendchild接口可以通过html文档对象模型(dom),可以通过多种方式更改html文件的运行时内容。用于appendchild向现有文档添加新元素,或移动页面上的元素。最终在浏览器中得到与图4相同呈现画面的效果。[0109]进一步地,所述查找并读取所述对象数据包括:[0110]若所述对象数据包括字体数据和/或媒体数据,根据所述交叉引用表读取字体数据和/或媒体数据的元素id,根据所述元素id查找并读取字体数据和/或媒体数据。[0111]所述根据所述对象数据的位置信息和/或大小信息组成内容元素包括:[0112]将字体数据和/或媒体数据与所述对象数据的位置信息和/或大小信息和/或画板信息组成内容元素。[0113]本步骤中,首先读取每个对象数据的数据,如该对象数据上有字体或者媒体,根据第二步的交叉引用表,用元素上的id去查找到对应的字体或者媒体,并植入到元素内,最终根据这些数据上的位置和大小等信息和画板信息组织的位置对应,组成一个完整的内容元素。[0114]进一步地,所述通过浏览器根据以超文本标记语言html+层叠样式表css格式描述的文档对象模型dom节点渲染得到所述pdf文件对应呈现的内容包括:[0115]调用所述浏览器的htmlelement.appendchild功能,将所述dom节点渲染到所述浏览器的页面,得到所述pdf文件对应呈现的内容。[0116]htmlelement.appendchild接口可以通过html文档对象模型(dom),可以通过多种方式更改html文件的运行时内容。用于appendchild向现有文档添加新元素,或移动页面上的元素。最终在浏览器中得到与图4相同呈现画面的效果。[0117]一种基于浏览器的pdf文件解析系统,包括以下模块:[0118]描述文本获取模块,用于加载并解析pdf文件,得到与所述pdf文件相关联的描述文本;[0119]对象数据解析模块,用于根据pdf格式规则,从所述描述文本中提取所述pdf文件的交叉引用表,根据所述交叉引用表解析出所述pdf文件的若干对象数据;[0120]内容元素构建模块,用于查找并读取所述对象数据,根据所述对象数据的位置信息和/或大小信息组成内容元素;[0121]网页格式转换模块,用于根据所述浏览器的渲染规则将所述内容元素中相应的内容转换为以超文本标记语言html+层叠样式表css格式描述的文档对象模型dom节点;[0122]渲染模块,用于通过浏览器根据以超文本标记语言html+层叠样式表css格式描述的文档对象模型dom节点渲染得到所述pdf文件对应呈现的内容。[0123]一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现所述的一种基于浏览器的pdf文件解析方法。[0124]本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。[0125]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。[0126]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。[0127]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。[0128]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。[0129]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1