一种流式文档的处理方法及装置
技术领域
本发明涉及文档转换领域,尤其涉及一种流式文档的处理方法及装置。
背景技术
首先对本发明涉及的术语名词进行介绍:
版式文档:是一种独立于软件、硬件、操作系统、呈现/打印设备的文档,例如pdf,cebx等格式的版式文档。一个版式文档可以包含多个页面,每个页面由与设备和分辨率无关的若干的图元(即版面对象,页面上呈现内容的最基本单元,如文本、图形、图像、表格、多媒体等类型图元,也包括基于这些基本图元组合而成的复合图元)组成。
版式文档的常见基本特性:原版原式呈现(文本图像等内容及其位置大小、色彩等版式信息在不同平台软硬件上呈现/打印显示效果一致);文档内容等数据的结构化描述(无论采用XML还是二进制描述方式,其文档格式都具有结构化特征);交互性(动画,多媒体,执行动作动等);安全性(数字签名等)等。近年来也增添了许多新特性:多样化互联网应用(线性化边下载边阅读、“一次出版,多平台应用,多途径传播”等);移动阅读灯设备自适应性(要求原版原式的版式文档能在手机等各种大小不一的设备中自动调整文档内容的呈现,如同办公软件等流式文档天然具备自适应特点)等。
流式文档:如Office文档,它描述的不是排版后生成的具有版面呈现所需要的所有数据的文档(即版式文档),其相关(流式)数据通常不具有固定位置大小等版面信息,每次加载文档时需要类似流水线式的对这些数据从头到尾进行重新排版计算得到相关位置信息,然后才能呈现出来。
结构化信息:关于文档(流式、版式等类型)的逻辑结构的信息,包括文章、节、段落等逻辑结构,以及显示样式信息。结构化信息可用于实现版面内容的重排(Reflow),以适应不同屏幕尺寸的设备特别是移动设备的需求。常见粗粒度的逻辑结构单元有:区域、排版框、段落、表格等。细粒度的基本逻辑结构单元有:文本句、图形、图像、公式、图表、多媒体对象、复合对象等。这些富有语义的逻辑数字内容对象在流式文档、版式文档等中的数据逻辑结构描述通常都是有差异的。
文本句:Run or Span,段落内最小的逻辑文字单元,连续的文本以是否具有相同文字属性为依据来划分为若干个句。段落内被其它单元对象如图形图像等锚点对象分割开始的即便有相同文字属性也会划分有不同的句。
复合图元:多个基本图元组合后形成的一个图元,类似办公文档中多个基本图形等对象组合Group后形成的一个整体性对象,该对象还可进一步复原(拆分)为组合前的对象。
图形图像:简单地讲图形用于表达各种形状shape,例如矩形,直线,曲线等,通常采用矢量化方式来描述它们(内部都可以转换到自由路径path方式来统一表达);图像(Image)即常见的图片,当然图形也可以用图像来表示,但大小相对矢量化描述的图形会大不少。
锚点anchor:通常流式文档的逻辑结构中除了文字段落对象之外的对象如图形、图像、图表、表格、公式、多媒体等对象都是要挂载(或锚)在某个其他节点对象(如段落对象、文档页面对象[如演示文稿的母版或幻灯片页面]等)之上的,在结构上它们是无法独立存在的,必须依附中其他对象上,我们统一称这些锚在别的对象上的对象为锚点对象。此外若锚点对象锚到段落或页面则此时锚点对象会记录其(x,y)的相对位置坐标,可统一换算到页面坐标。但若该锚点对象作为字符(As Char)锚到段落文本中的某个字符上,则其流式格式信息中只记录其相对文本行基线(Baseline)的垂直位置信息。锚点对象内的段落文本或组合对象的位置通常是相对该锚点对象进行记录的,其中的段落文本通常还有相对于该锚点对象的水平和垂直对齐描述信息,还有通用的段落文本属性组信息。
在文档转换领域,通常利用虚拟打印技术将流式文档(例如办公软件MicroSoftOffice文档)转换为版式文档(例如Apabi CEBX文档[(此格式可包含流式信息和版式信息]),但该技术只能得到纯版式信息。而其中的流式信息(如文档中的图形图像)利用MicroSoft Word等应用程序提供的二次开发应用接口就可以获取。最后若要得到一份在移动设备上可阅读的兼版流式信息一体的版式文档,则需要将上述二者相关的纯版式信息和待提取的流式信息结合起来以生成最终的版式文档。
制作带流式图形图像结构化信息的版式文档,现有公开的技术为采用虚拟打印技术将流式图形图像结构化信息(包含其中的文字信息)简单地生成对应的版式文档图形、图像、文本图元,并以页面图元块方式关联到其对应的流式结构化信息中。其缺陷是:在各种移动设备阅读器中重排呈现图形图像信息时,要么图形图像信息丢失,要么只能呈现图形图像中的文本信息,要么以多段落分别呈现图形图像和其中的文本信息。参见图1,为图形阅读效果正确和错误比对示意图。
造成此缺陷的根本原因在于:一、版式文档中除了复合图元,其结构化信息中目前尚无同时呈现带文本信息的图形图像,因此要么取舍其一(图1错误效果2和3)、要么二者兼得,但以分离的模式提供(图1错误效果1)。二、采用类似虚拟打印技术智能识别带文本信息的图形图像为复合图元是很困难的这往往是由于相互矛盾导致的:即这种情况被识别为复合图元,但浮动于文本上的图形图像则显然会被识别错误。
因此,现有技术将流式文档转化为版式文档时,不能正确处理由文本和图形图像组成的组合图形图像。
发明内容
本发明实施例提供了一种流式文档的处理方法及装置,用于将流式文档转化为版式文档,并正确呈现由文本和图形图像组成的组合图形图像;增强文档在不同设备上显示时的自适应性,提高用户体验。
本发明实施例提供的一种流式文档的处理方法包括:
从流式文档中获取由图形图像与文本组成的组合图形图像的信息;其中包括图形图像的锚点信息和文本的属性信息;
根据所述文本的属性信息和所述图形图像的锚点信息,确定各文本句的坐标;
根据所述组合图形图像的信息和所述各文本句的坐标,将组合图形图像映射至版式文档。
本发明实施例提供的一种流式文档的处理装置包括:
识别模块,用于从流式文档中获取由图形图像与文本组成的组合图形图像的信息;其中包括图形图像的锚点信息和文本的属性信息;
坐标确定模块,用于根据所述文本的属性信息和所述图形图像的锚点信息,确定各文本句的坐标;
映射模块,用于根据所述组合图形图像的信息和所述各文本句的坐标,将组合图形图像映射至版式文档。
通过以上技术方案可知,本发明中从流式文档中获取由图形图像与文本组成的组合图形图像的信息;其中包括图形图像的锚点信息和文本的属性信息;根据所述文本的属性信息和所述图形图像的锚点信息,确定各文本句的坐标;根据所述组合图形图像的信息和所述各文本句的坐标,将组合图形图像映射至版式文档。本发明通过对流式文档中的流式语义信息进行分析,整体性识别组合图形图像的结构化信息并映射至版式文档,避免了组合图形图像在版式文档中的错误显示,提高了用户体验。
附图说明
图1为现有技术中流式文档转化为版式文档后的显示效果示意图;
图2为本发明实施例提供的一种流式文档的处理方法的流程示意图;
图3为本发明具体实施例提供的一种流式文档的处理方法的流程示意图;
图4为本发明具体实施例提供的识别流式等原始文档中的图形图像信息的流程示意图;
图5为本发明具体实施例提供的图形图像及其段落文本位置计算的流程示意图;
图6为本发明具体实施例提供的将图形图像信息映射为版流对等结构的流程示意图;
图7为本发明实施例提供的一种流式文档的处理装置的结构示意图;
图8为本发明实施例提供的一种流式文档的处理装置的另一结构示意图;
图9为本发明实施例提供的一种流式文档的处理装置的另一结构示意图。
具体实施方式
本发明实施例提供了一种流式文档的处理方法及装置,用于将流式文档转化为版式文档,并正确呈现由文本和图形图像组成的组合图形图像;增强文档在不同设备上显示时的自适应性,提高用户体验。
参见图2,本发明实施例提供的一种流式文档的处理方法包括:
S201、从流式文档中获取由图形图像与文本组成的组合图形图像的信息;其中包括图形图像的锚点信息和文本的属性信息;
S202、根据所述文本的属性信息和所述图形图像的锚点信息,确定各文本句的坐标;
S203、根据所述组合图形图像的信息和所述各文本句的坐标,将组合图形图像映射至版式文档。
较佳的,所述从流式文档中获取由图形图像与文本组成的组合图形图像的信息,包括:获取流式文档中全部图形图像的属性信息;根据所述全部图形图像的属性信息,确定并保存页面预设区域内的组合图形图像的信息。所述预设区域内的组合图形图像,为文档版芯段落或页面上类型为图形图像的锚点对象。
较佳的,所述图形图像的锚点信息包括图形图像的锚点类型。
较佳的,当所述图形图像的锚点类型为非作为字符As char时,从流式文档中获取的图形图像的锚点信息还包括锚点坐标;根据所述文本的属性信息和所述图形图像的锚点信息,确定各文本句的坐标,包括:根据所述文本的属性信息和图形图像的锚点坐标,确定各文本句的坐标。
较佳的,当所述图形图像的锚点类型为作为字符As char时,根据所述文本的属性信息和所述图形图像的锚点信息,确定各文本句的坐标,包括:通过排版获取图形图像的锚点坐标;根据所述文本的属性信息和图形图像的锚点坐标,确定各文本句的坐标。即根据锚点类型为As char或非As char,进行不同的处理。本发明提到的排版可以由多种工具实现,包括排版引擎,流式文档软件的指定API等,用于确定锚点在排版后的坐标。而在确定锚点的坐标之后,文本句的坐标根据文本句及其段落文本句属性组即可得出。
较佳的,所述文本的属性信息,包括:文本句及其段落的属性信息。
本发明提供的生成版式文档的方法包括两个步骤:1、将流式文档的内容映射为页面块对象PageBlock的图元;2、将PageBlock的图元映射至逻辑结构信息的块piece。也就是说,为了使得生成的版式文档对不同设备屏幕具有更好的适应性,需要采取类似于流式文档的描述方式对图元进行结构化描述,这种版式文档中的流式信息,通过段落片段的块piece来表达,不同的图元类型对应于不同的piece。
较佳的,根据所述组合图形图像的信息和所述各文本句的坐标,将组合图形图像映射至版式文档,包括:根据所述组合图形图像的信息和所述各文本句的坐标,将组合图形图像映射为版式文档的页面块对象PageBlock中的图元;将所述PageBlock中的图元映射至该版式文档的逻辑结构信息的段落片段的块piece。
较佳的,当所述组合图形图像的锚点的挂接对象不是页面时,该方法还包括:将所述锚点的挂接对象映射至版式文档的页面块对象PageBlock;根据所述组合图形图像的信息和所述各文本句的坐标,将组合图形图像映射为版式文档的页面块对象PageBlock中的图元,包括:根据所述组合图形图像的信息和所述各文本句的坐标,将组合图形图像映射为所述锚点的挂接对象所映射至的PageBlock中的图元。
较佳的,所述根据所述组合图形图像的信息和所述各文本句的坐标,将组合图形图像映射为版式文档的页面块对象PageBlock中的图元,包括:根据所述图形图像的锚点信息,将图形图像映射为版式文档的PageBlock中的复合图元、路径图元或图像图元;以及,根据所述各文本句的坐标,将各文本句映射为版式文档的PageBlock中的文本图元。
较佳的,当图形图像的填充属性值为渐变或底纹填充时,将图形图像映射为版式文档的PageBlock中的复合图元。
较佳的,不同类型的PageBlock的图元映射至不同类型的piece;其中,路径图元映射至类型为Graph的块,图像图元映射至类型为Img的块,文本图元映射至类型为Text的块。复合图元无需标注块的类型。
下面给出本发明的具体实施例:
实施例1:版流式逻辑结构化处理流程。
参见图3,本实施例包括以下步骤:
A10、识别流式等原始文档中的图形图像信息;
A20、图形图像及其段落文本位置计算;
A30、将图形图像信息映射为版流对等结构。
下面针对实施例1中的各个步骤,分别给出具体实施例。
实施例2:识别流式等原始文档中的图形图像信息。
如图4所示,包括以下步骤:
B10、初始化识别环境;
依据原始文档类型(例如docx文档,或书版软件的xml(Extensible MarkupLanguage,可扩展标记语言)流式文档等)初始化对应的应用程序二次开发接口环境或自开发的分析工具环境或相关的内核引擎,并加载该文档。通过现有开发环境或技术可以正确获取原始文档的全局性默认图形图像的属性组(或式样)信息defaultShapeStyleMap,采用标准C++std::map<strAttributeName,strAttributeValue>,defaultShapeStyleMap,即可承载这些信息,其中strAttributeName表示图形图像的各属性名称,strAttributeValue表示图形图像的各属性名称对应的值,如(fontSize,10.5)表示字体大小为10.5,(alignment,left)表示左对齐等。
B20、图形图像的纯流式分析;
流式文档中的图形图像对象通常锚在段落(包括文字表单元格中的段落)、或整个文档页面(也包含类似演示文稿的母版或幻灯片页面)。在上述B10提供的环境下,可正确识别(例如纯分析该原始文档格式)并依次获取文档版芯段落或页面上类型为图形图像的锚点对象,而类似页眉页脚或文档背景等中的图形图像不在此列。
此外,通过纯分析该图形图像信息,可以获取除了作为字符As char锚在段落文本上的相对于该页面的锚点坐标(x,y)位置信息,该(x,y)位置信息也作为图形图像的两个基本属性记录下来。
B30、保存图形图像识别结果。
本发明构造了如下几个数据结构来表达组合图形图像信息:
1、组合图形图像信息结构,记为shapeGroup:采用一个递归的简单结构表达,Struct{bGroup;std::Vector<struct{shapeStyleMap;shapeContentVector}>shapes;embedGroupPointer;};其中bGroup表示该图形图像是否为组合图形;shapeStyleMap表示图形图像的属性组信息结构(参见下2);shapeContentVector表示图形图像内文本段信息结构(参见下3),shapes表达若干个组合的图形图像;embedGroupPointer表示嵌套的组合图形图像指针,指向该结构即shapeGroup。
2、单一图形图像的属性组信息结构,记为shapeStyleMap:采用标准C++std::map<strAttributeName,strAttributeValue>shapeStyleMap;即可承载这些信息(包括图形的类别,如矩形等)。
3、单一图形图像内文本段信息结构,记为shapeContentVector:采用标准C++std::Vector<struct{std::map<strAttributeName,strAttributeValue>paraStyleMap;std::Vector<struct{string run;std::map<strAttributeName,strAttributeValue>runStyleMap}>runVector;}>shapeContentVector;用于记录并保存图形图像中的若干段落信息,其中paraStyleMap用于描述该段落的属性组,runVector用于描述文本段落的基本组成单元,即句,它又由句文本(即其中的string run)和句属性(即其中的runStyleMap)组构成。
通过以上步骤,即可完整获取并保存原始文档中的图形图像信息。
实施例3:图形图像及其段落文本位置计算。
参见图5,具体包括以下内容:
C10、锚点类型分析;
从上述shapeGroup结构中唯一的shapeStyleMap入口中查找该锚点对象的锚点类型属性值,若不为As char类型则不进行C20的锚点对象位置计算,即实施例2步骤B20中已经获取;但仍需计算段落文本位置。若为As Char类型,则需要进行C20的锚点对象及其段落文本位置计算。
C20、锚点对象及其段落文本位置计算;
锚点对象及其段落文本的位置计算两方面内容:通过现有Office APIs(Application Programming Interface,应用程序编程接口)中选择Selection和区域Range对象或者通过内核排版引擎或者通过自定义排版引擎,计算得到该锚点对象排版后(x,y)位置坐标值。而通过其中各文本句及其段落文本句属性组以及默认的defaultShapeStyleMap即可计算出各文本句的(x,y)位置值。
C30、保存排版计算结果。
分别将上述C20中获取的锚点对象和段落文本位置的(x,y)坐标值赋值给shapeStyleMap中的x,y属性和runStyleMap中的x,y属性。
实施例4:将图形图像信息映射为版流对等结构。
参见图6,具体包括以下内容:
D10、锚点对象到版式文档映射;
先从shapeGroup结构中查询锚点对象类型。若是页面锚点对象则直接将该锚点对象整体性映射到版式文档对应页面的页面块对象(PageBlock);否则首先将该锚点对象的挂接对象(如段落)映射到版式文档对应页面的页面块对象(PageBlock),然后将锚点对象整体性映射到该pageBlock上。
具体来讲,将锚点对象整体性映射到pageBlock上的方法是,依次处理上述shapeGroup中锚点对象及其可能的组合对象,若图形属性组中填充属性(Fill)值为渐变或底纹填充,则将锚点对象和渐变或底纹分别映射为对应的版式路径或图像图元和渐变或底纹图元,然后将它们两个组合成一个复合图元整体关联到该pageBlock上;否则仅将锚点对象映射为对应的版式路径或图像图元关联到该pageBlock上。又若锚点对象有段落文本,则将其中各文本句依次映射为该pageBlock上的文本图元。
D20、锚点对象的版式逻辑结构信息映射。
将上述pageBlock中的各类型图元pageObject映射到一个版式逻辑结构信息的某个段落片段的若干块piece上,其中块依据pageBlock中连续的图元类型来划分,路径图元则映射到类型为Graph的块,图像图元则映射到类型为Img的块,文本图元则映射到类型为Text的块,而复合图元无需标注块的类型。
上述图形图像的版流式逻辑结构化处理方法,由于其采用了整体性识别流式图形图像结构化信息,这样就可以在移动设备上具有很好的自适应性,即用户的阅读体验非常好。
参见图7,本发明实施例提供的一种流式文档的处理装置包括:
识别模块71,用于从流式文档中获取由图形图像与文本组成的组合图形图像的信息;其中包括图形图像的锚点信息和文本的属性信息;
坐标确定模块72,用于根据所述文本的属性信息和所述图形图像的锚点信息,确定各文本句的坐标;
映射模块73,用于根据所述组合图形图像的信息和所述各文本句的坐标,将组合图形图像映射至版式文档。
较佳的,所述识别模块具体用于:获取流式文档中全部图形图像的属性信息;根据所述全部图形图像的属性信息,确定并保存页面预设区域内的组合图形图像的信息。
较佳的,所述图形图像的锚点信息包括图形图像的锚点类型。
较佳的,当所述图形图像的锚点类型为非作为字符As char时,识别模块从流式文档中获取的图形图像的锚点信息还包括锚点坐标;坐标确定模块具体用于:根据所述文本的属性信息和图形图像的锚点坐标,确定各文本句的坐标。
较佳的,当所述图形图像的锚点类型为作为字符As char时,坐标确定模块具体用于:通过排版获取图形图像的锚点坐标;根据所述文本的属性信息和图形图像的锚点坐标,确定各文本句的坐标。
较佳的,所述文本的属性信息,包括:文本句及其段落的属性信息。
较佳的,参见图8,所述映射模块73,包括:
图元映射模块81,用于根据所述组合图形图像的信息和所述各文本句的坐标,将组合图形图像映射为版式文档的页面块对象PageBlock中的图元;
块映射模块82,用于将所述PageBlock中的图元映射至该版式文档的逻辑结构信息的段落片段的块piece。
参见图9,较佳的,所述映射模块73还包括:
挂接对象映射模块83,用于当所述组合图形图像的锚点的挂接对象不是页面时,将所述锚点的挂接对象映射至版式文档的页面块对象PageBlock。
较佳的,所述图元映射模块81,具体用于:根据所述图形图像的锚点信息,将图形图像映射为版式文档的PageBlock中的复合图元、路径图元或图像图元;以及,根据所述各文本句的坐标,将各文本句映射为版式文档的PageBlock中的文本图元。
较佳的,当确定图形图像的填充属性值为渐变或底纹填充时,图元映射模块将图形图像映射为版式文档的PageBlock中的复合图元。
综上所述,本发明实施例提供了一种流式文档的处理方法及装置,用于将流式文档转化为版式文档,并正确呈现由文本和图形图像组成的组合图形图像;增强了文档在不同设备上显示时的自适应性,提高了用户体验。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。