



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算机工程李强,刘时进:PDF阅读器的设计与实现与设计ComputerEngineeringandDesign2010,31(7)1635开发与应用PDF阅读器的设计与实现李强,刘时进(华中师范大学物理科学与技术学院,湖北武汉430079)摘要:为有效提取PDF(portabledocumentformat)文件中的文字、图片、图形信息,提出了包含文件预处理、显示预处理、功能扩展、显示4个单元的PDF阅读器的实现模型。基于PDF文件结构特点,提出了忽略次要信息定位关键位置的解析思路。在此基础上,针对FlateDecode、DCTDecode和CCITTFaxDecode这3种过滤器处理的数据流,给出了详细的解决方案,然后对PDF页面内容进行两次解析,设计相应的文字图形等数据结构保存结果,最后对数据利用和功能扩展进行了讨论。通过实验结果表明,该模型能较好地实现PDF信息提取和显示,有利于PDF在中文信息处理领域中的进一步开发利用。关键词:可移植文档格式;阅读器;文件解析;图像提取;信息处理中图法分类号:TP391文献标识码:A文章编号:1000-7024(2010)07-1635-04DesignandimplementationofPDFreaderLIQiang,LIUShi-jin(CollegeofPhysicalScienceandTechnology,CentralChinaNormalUniversity,Wuhan430079,China)Abstract:Toextractthetext,imagesandgraphicalinformationfromPDFfilevalidly,animplementationmodelincludingfourunits(filepretreatment,displaypretreatment,functionextensionanddisplay)israised.BasedonthestructureofPDFfile,asolutionofignoringsecondarymessageandpositioningkeyinformationisputforward.Onthisbasis,asolutiontothedatastreamprocessedbyFlateDecode,DCTDecodeandCCITTFaxDecodefiltersispresented.AfteranalyzedPDFpagestwice,correspondingdatastructureoftextandgraphicalaredesignedtorecordtheresults.Atlastthedatautilizationandfunctionextensionarediscussed.ThemodelcanimplementtheextractionanddisplayofinformationinPDFfilewellbyexperimentalcomparison,anditwillbenefitthefurtherdeve-lopmentofPDFinthefieldofChineseinformationprocessing.Keywords:PDF;reader;fileparse;imageextraction;informationprocessing0引言PDF作为国际标准的电子文档格式1,以跨平台、多媒体集成、可靠安全、精确的色彩还原度和丰富的图象显示等许多其它文档格式无法比拟的优点,在全球范围得到广泛的认可和应用。全世界有超过1800家供应商提供基于PDF的解决方案,包括生成工具、插件、咨询、培训和支持工具。 (怎么把PDF转换成word)目前,对PDF各方面的研究正处于一个全面发展的时期。国内很多作者从PDF文件的图像、链接信息、文本信息提取和PDF文件阅读器的具体实现方案。1阅读器体系结构本阅读器从实用出发,充分考虑了代码的可维护性和功能可扩展性的需求,用VC+6.0实现。主要有4个单元模块:文件预处理模块、显示预处理模块、功能扩展模块、显示模块,各模块之间调用关系如图1所示。其中,文件预处理模块解析PDF文件,得到相关文字、图片、图形等页面内容信息;显示预处理模块建立内存画布,根据文件预处理得到的数据,插件应用等方面进行了许多探讨2-6,取得了一定的成果,但由于研究目的都相对单一,难以提供一个以PDF技术为核心的完整解决方案。同时,各行业对PDF在中文信息处理领域的应用性问题提出了更高的要求:一方面,需要准确提取PDF中的所有数据信息,满足信息检索、图像处理、文字校对等工作;另一方面,需要开发具有自主知识产权的PDF文件阅读器,实现PDF的完美再现,根据我国国情解决日常阅读存档和出版工作流程中使用PDF的诸多具体问题。基于以上两方面考虑,本文将以PDF文件解析和数据信息提取为重点,给出一种文件预处理文本抽取中文校对图像提取图像检测功能扩展图1模块关系显示预处理显示收稿日期:2009-04-27;修订日期:2009-06-29。作者简介:李强(1983),男,湖北宜昌人,硕士研究生,研究方向为信号与信息处理;刘时进(1964),男,副教授,研究方向为计算机应用。E-mail:11736746216362010,31(7)计算机工程与设计ComputerEngineeringandDesign调用GDI(graphicsdeviceinterface)函数将数据渲染在画布上;功能扩展模块调用文件预处理模块返回的数据,提取特定文字或图片并完成相应的信息处理过程;显示模块将内存画布和功能扩展模块返回的结果进行显示。 (怎么把PDF转换成word)2文件预处理实现过程标准的PDF文件结构包括4个部分:文件头、文件体、交叉引用表和文件尾7。文件预处理模块的实现,需要按照一定的线索对该4部分内容进行读取,定位到记录文字、图片等信息的关键位置,同时将采用不同过滤器处理的二进制数据流解析为可识别的信息,包括图片和文字编码等。对于页面内容信息则需要进行二次解析。PDF解析线索如图2所示。页面内容对象,包含了PDF页面内的路径、文字、内嵌图像数据等页面描述信息。定位到关键位置之后,对数据流采用相应的解析方法,得到可识别的文字和图像等。2.2数据流(stream)解析PDF中使用了工业标准的压缩算法,如ASCII85Decode,LZWDecode,FlateDecode,RunLengthDecode,DCTDecode,CCITTFaxDecode等10种标准的过滤器,其中图片数据流一般采用DCTDecode(针对彩色和灰度图像)和CCITTFaxDecode(针对单色图像)过滤器,而字体文本和图形内容流则使用Flatede-code过滤器。本文重点研究了这3种过滤器在PDF文件中的具体应用并给出了相应的解析方法。读取PDF文件处理文件尾处理页面对象过滤器的名称可通过关键字/Filter获取。解析图片首先需要根据关键字/Length、/Width、/Height、/BitsPerComponent、/ColorSpace等获得图片的长度、宽度、高度、位深、色彩空间处理资源流对象等信息。2.2.1DCTDecode过滤器解析处理内容流对象处理字体流对象处理外部对象DCTDecode过滤器采用基于JPEG标准的DCT(discretecosinetransform)变换来处理图片。一般只需要直接将stream图2PDF解析线索2.1定位到关键位置为了提高PDF文件的解析速度,可以根据需求忽略部分次要信息,比如关键字/Info定义的文件描述对象和/Annots定义的活动对象等,直接定位到关键位置。步骤1:定位到文件尾,获取交叉引用表的位置,记录根对象号。步骤2:读交叉引用表。从关键字xref开始,每组数据分别记录了该对象相对文件开头的字节偏移量、对象修改次数以及是否在使用中(其中以f结尾的表示该对象空闲,以n结尾的表示该对象正在被使用中)。需要注意的是线性化的PDF和更新过的PDF可能含有两段或以上的交叉引用表,此时需要将多段交叉引用表分别读取,然后合并成惟一的一段交叉引用表,方便随机存取对象8。将获取的交叉引用表的数据存储在以下数据结构中:structXRefintObjNum;/对象号intOffSet;/对象位置intGenNumber;/对象更改次数BOOLIsUsed;/对象使用状态;步骤3:获取页面对象信息。根据页面组对象下的关键字/Kids获取各页面对象号,随后根据交叉引用表的提供的对象偏移量定位到各页待解析内容的关键位置,即资源和内容对象。关键字/Resources指示了PDF资源对象,包含字体、图片、表格等。其中,/Font指示字体信息,/XObject包含了图片、表格(Form)或PS片段数据信息,/ColorSpace说明了该文件用到的色彩模型,包括DeviceGray、DeviceCMYK和DeviceRGB,/Shading表示图形填充阴影模式,关键字/Contents指示了PDF与endstream之间的图像数据流写到后缀名为.jpg的文件中即可。但需要注意的是,JPEG文件中有几个重要的标记,SOI(startofimage)=FFD8表示JPEG文件开始,EOI(endofimage)=FFD9,JPEG文件都以FFD9结束。在将二进制数据流写入文件的时候,需要对文件头和尾进行该字节的确定,验证是否为有效的JPEG图片数据。2.2.2CCITTFaxDecode过滤器解析CCITTFaxDecode过滤器采用CCITT传真标准来压缩图片数据。TIFF文件由4部分组成,文件头(IFH)、文件目录(IFD)、目录入口(DE)和图像数据9。解析过程如下:写IFH,前两个字节写4DH4DH(摩托罗拉整数格式)或49H49H(Intel整数格式),接下来两个字节写2AH,后4个字节写IFD的偏移量,08H00H00H00H,表示第2个数据结构相对文件开始处的偏移量为8个字节。写IFD,每个IFD标识1个图像的基本属性,IFD结构中包含多个线性排列的DE序列,每个DE标识了图像的某一个属性,一般写入下面11个就可以正确显示出图像10。Image-Width、ImageLength、Compression、PhotometricInterpretation、StripOffsets、RowsPerStrip、StripByteCounts、Xresolution、Yreso-lution、T6Options、ResolutionUnit。写图像数据。把stream与endstream之间的图像数据流写到IFD后并保存到.tif后缀的文件中。2.2.3Flatedecode过滤器解析使用Flatedecode过滤器处理的数据主要有两部分,分别是字体信息和页面内容。Flatedecode过滤器采用zlib/deflate压缩方法进行数据压缩,可以使用ZLib()的代码来解压,下载免费的“zlibcompiledDLL”压缩包。在vc中添加对zlib.h和zconf.h头文件的引用,链接zdll.lib到当前项目中,定义z_stream的对象zstrm,并对其中的4个成员变量赋值,其各自含义如下:zstrm.avail_in/待解析数据流长度李强,刘时进:PDF阅读器的设计与实现2010,31(7)1637zstrm.avail_out/解析后数据流长度,一般是输入大小的810倍zstrm.next_in/待解析数据流zstrm.next_out/解析后数据存放的位置然后调用解压初始化函数inflateInit(&zstrm),最后调用解压函数inflate(&zstrm,Z_FINISH)完成数据解压缩。对于/Font对象下的文字信息,需要通过/BaseFont获得Postscript对应的字体名称,根据/ToUnicode获得对应字体汉字的Unicode编码,/ToUnicode对应的数据流解析后,我们可以得到如图3所示格式的字体映射表。3beginbfcharendbfchar图3字体映射表其中,所在列为文字的Unicode编码,所在列为PDF字符名称,并且将所有字体的两编码一一对应关系添加到以下结构中:structFontscharBaseFontName30;/字体名称charPdfNum2;/字符名称charUnicodeNum2;/unicode编码;对于页面内容流,第一次解析之后,我们需要将解析后的部分写入中间文档,比如存储在.txt后缀的文件中,方便随后进行二次解析。2.3页面内容(contents)二次解析PDF一共有70多条页面描述指令,这些指令描述了页面上的一系列图形对象。包括路径对象、文本对象、图像对象、外部对象和色彩渐变对象等。图形对象的精确渲染由相应参数来控制,诸如图片坐标、裁剪路径、文字属性等,这些参数是图形状态的部分。PDF通过图形状态栈来存储(q)和还原(Q)图形状态。本阅读器的图形显示是利用Windows提供的图形设备接口GDI来实现的。因此,我们需要将PDF的内容流操作数(con-tentstreamoperator)解析成GDI中的函数,调用2.2中获得的外部资源对象,比如通过字体映射表将PDF字符名称映射到其Unicode编码,然后整合信息并记录相应的数据,便于显示预处理模块调用。解析方法举例如下:比如解析后的页面内容中我们可以看到以下语句,表示描绘(Stroke)从一点到另一点的路径:63.916195542.410645m327.646973381.724976lS相应的,我们需要在图形结构中分别记录操作属性和操作坐标,在GDI中实现就需要用以下两条语句来实现:MoveTo(63.916195,542.410645)LineTo(327.646973381.724976)因此,我们设计了Clip、Word、Picture、Graphic这4个数据结构分别存储裁剪、文字、图片、图形信息,并以MainList结构来整体控制以上4个结构。基于对PDF阅读器应用性的充分考虑,在这里我们记录PDF文件中各个对象的各种参数,以供显示和功能扩展模块调用。比如图片,我们记录了图片的坐标、长、宽、色彩模式、旋转倾斜参数等,对于文字,我们建立了以下数据结构详细记录文字坐标、字体、颜色、特效模式等信息。structWord/文字块信息floatX,Y;/坐标charch3;/字charfontname30;/字体名floatfontheight;/高floatfontwidth;/宽COLORREFwcolor;/RGB颜色shortwrotate;/旋转角度intrendmode;/文字特效模式;3其它模块实现其它模块的实现不涉及PDF文件格式,在这里不做重点描述,仅作以下简单说明:显示预处理模块和功能扩展模块都需要调用文件预处理模块的数据,其所有功能都封装在DLL中。显示预处理模块建立内存画布,调用GDI函数,利用结构中记录的信息,将PDF页面在画布上描绘出来,以供显示模块调用。功能扩展模块根据实际需求抽取PDF数据信息并进行相应处理。该模块的功能和实现,主要考虑基于以下5点方式:(1)提取文字信息,实现屏幕取词、中文自动校对、数据检索等功能,满足日常阅读、文档归类、印前校对的需要;(2)提取图片信息,实现图片加工处理、印前色彩模式检查等功能;(3)针对显示界面进行批注、标记、注释等操作,使界面人性化且美观;(4)提供接口供外部模块嵌入,比如金山词霸等日常应用软件,满足阅读器的扩展性和开放性需求;(5)在进一步研究其它文档格式的基础上,利用已有数据实现PDF到WORD等格式的转换,增加PDF应用的灵活性。显示模块采用单文档模板Doc/View框架结构来完成界面显示。4实验及分析根据以上设计模型及算法编程实现PDF阅读器。经测试,文件预处理模块基本能得到预计的PDF数据,包括图片和文字相关属性以及图形路径坐标等;显示预处理模块和显示模块能很好地实现解析数据的再现,对于基本的文字、图片、图形以及包括勾边、重影、裁剪和旋转等在内的特殊效果都能较好显示。但同时,对于一些比较特殊的文字字体,以及渐变底纹填充等效果的处理还有待于进一步改进。并且,对于不同的工具生成的PDF文件,虽然都是采用标准的PDF格式,16382010,31(7)计算机工程与设计ComputerEngineeringandDesign但由于其中stream流的编排方式以及文字内嵌形式不尽相同,影响了部分数据的提取,特别是文字、坐标等信息,需要在进一步大量实验基础上对文件预处理模块进行修改完善。本文以出版行业流行的桌面排版软件方正飞腾创艺5.0发排生成的PDF文件为例,比较了AdobeAcrobatStandard6.0显示效果(如图4所示)和本阅读器显示效果(如图5所示)。该PDF文件包括图片、文字、线条以及相应的旋转、倾斜、重影、勾边等特殊效果。图5本阅读器显示效果format-Part1:PDF1.7S.2李德华.利用方正小样与PDF文件的无缝对接实现远程校对J.编辑学报,2008,20(6):545-546.3张秀秀,马建霞.PDF科技论文语义元数据的自动抽取研究J.现代图书情报技术,2009(2):102-106.图4AdobeAcrobatStandard6.0显示效果5结束语实验证明,本文提出的PDF阅读器的实现模型可以很好地完成对PDF从解析到显示的全过程。在目前基础上,根据实际需求对已经记录的数据进行处理,可进一步实现如文本搜索定位、文本校对、审读标记、格式转换等功能,从而完善PDF工作流程解决方案,这也正是我们下一步将要进行的工作。对PDF文件解析和数据信息处理的深入研究,将为制作AdobeAcrobat各种功能插件和开发具有自主知识产权的阅读器做一些铺垫。参考文献:1ISO32000-1:2008,Documentmanagement-Portabledocument(上接第1590页)4PetersonJL.PetrinettheoryandmodelingofsystemsM.Eng-lewoodcliffs,NJ:PrenticeHall,1981.5ZuberekWM.Timedpetrinets:definitions,propertiesandap-plicationsJ.MicroelectronicsandReliability(S0026-2714),1991,31(4):627-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 硅胶材料制品工项目经济效益和社会效益分析报告
- BIM与施工现场虚拟仿真技术的结合
- 幼儿趣味知识大会试题及答案
- 全国中学生数学竞赛组合数学试题及答案
- 早餐生活常识试题及答案
- 营养师三级试题及答案
- 铣工技能竞赛培训试题及答案
- 员工福利人事考试试题及答案
- T-CIATCM 005-2019 中医药综合统计信息数据元值域代码
- (正式版)DB2312∕T 074-2023 《水稻干尖线虫病防治技术规程》
- 2025广东中山市生态环境局招聘雇员1人考试参考题库及答案解析
- 云南省2024-2025学年高二上学期11月期中考试数学试题(解析版)
- 第四章篮球传切配合运用方法教学设计人教版初中体育与健康八年级全一册
- 八年级英语上册新教材解读课件(外研版2024)
- 农业银行笔试题库及答案
- 房屋抵押借贷合同(标准版)
- 医疗放射防护培训课件
- 手术室带教老师岗位职责
- (完整)马克思主义政治经济学习题及参考答案
- 典范英语ComingClean坦白翻译
- 个体诊所医师聘用合同书
评论
0/150
提交评论