背景技术
随着电脑的不断普及,无纸化办公得到越来越多的应用,各种各样的文档也大量的出现在用户的面前。
Microsoft Office PowerPoint是制作和演示幻灯片的软件,能够制作出集文字、图形、图像、声音以及视频剪辑等多媒体元素于一体的演示文稿,将用户所要表达的信息组织在一组图文并茂的画面中,用于介绍公司的产品、展示自己的学术成果。
如何在最大限度保留PowerPoint原始信息的前提下、脱离PowerPoint、高效快速的生成PowerPoint文档成为了一个迫切的需求,现有技术中,从XML格式批量转换为PPTX格式通常有以下几种方案:
方案一,通过调用PowerPoint的自动化Com接口来实现,每输入一个基本元素调用一次Com接口;
方案二,通过调用一些较成熟的开源文档编辑软件的接口实现PowerPoint基本信息的写入,比较流行的是调用OpenOffice的API接口来实现PowerPoint文档的生成;
方案三,将一个Slide中的信息合成一张图片整体输入。
发明人在研究过程中发现,上述几种方案都存在缺点:
方案一的缺点:系统必须安装了PowerPoint程序,否则将会导致转换失败;而且由于每输入一个PowerPoint基本元素就会有一次Com调用,由此带来的大量Com调用会降低系统的性能和稳定性;
方案二的缺点:OpenOffice对MS-PowerPoint的特效支持不好,尤其是两个文档间的切换效果和动画展示效果,但这些功能对于MS-PowerPoint来说又是比较重要的;
方案三的缺点:由于将一个Slide中的所有元素合成了一张图片,虽然使得排版比较美观,但是降低了生成文档的可编辑性。
如何提高XML文档转换为PPTX文档的转换效率和稳定性,提高XML文档转换为PPTX文档的的通用性,能够方便的对转换后的文档进行修改,是文档应用领域研究的方向之一。
发明内容
本发明的目的在于提供一种XML文档转换为PPTX文档的方法,目的在于提高XML文档转换为PPTX文档的转换效率和稳定性,提高XML文档转换为PPTX文档的的通用性,能够方便的对转换后的文档进行修改。
本发明实施例是这样实现的,一种XML文档转换为PPTX文档的方法,所述方法包括以下步骤:
读取XML文件中的基本元素信息;
对读取的XML文件中的基本元素信息按照PowerPoint的排版格式进行排版,获取一排版结果;
根据所述排版结果生成PowerPoint格式的XML系列文件;
调用zip库对生成的XML系列文件进行压缩,并按照PPTX后缀的方式给压缩后的文件命名。
本发明实施例的另一目的在于提供一种XML文档转换为PPTX文档的装置,所述装置包括:
信息读取模块,用于读取XML文件中的基本元素信息;
排版模块,用于对读取的XML文件中的基本元素信息按照PowerPoint的排版格式进行排版,获取一排版结果;
文件生成模块,用于根据所述排版结果生成PowerPoint格式的XML系列文件;以及
压缩转换模块,用于调用zip库对生成的XML系列文件进行压缩,并按照PPTX后缀的方式给压缩后的文件命名。
本发明实施例在将XML文档转换为PowerPoint文档的过程中,在生成端直接写PPTX样式的XML文件,并将生成的文件按照zip的格式进行压缩进而生成PPTX文件,提高了XML文档转换为PPTX文档的转换效率和稳定性,提高了XML文档转换为PPTX文档的的通用性,能够方便的对转换后的文档进行修改。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1示出了本发明实施例提供的XML文档转换为PPTX文档的方法的流程。
在步骤S101中,读取可扩展标记语言(Extensible Markup Language,XML)文件中的基本元素信息;
在步骤S102中,对读取的XML文件中的基本元素信息按照PowerPoint的排版格式进行排版,获取一排版结果;
在步骤S103中,根据步骤S102中的排版结果生成PowerPoint格式的XML系列文件;
在步骤S104中,调用zip库对生成的XML系列文件进行压缩,并按照PPTX后缀的方式给压缩后的文件命名。
具体的,步骤S101包括:
从XML文件中读取两类基本元素信息:
第一类是每个Slide中元素的物理信息,包括元素的大小位置、文档的页数和是否加密等信息。其中,基本元素信息的类型包括文本、图像、图元、表格,在具体实施过程中,首先使用XML读取库将基本元素读出,按照基本元素的类型对元素进行分组,对各组的元素按照层次顺序进行重新排列,最后将得到的信息输入到中间数据结构中;
第二类是Slide间的切换效果和每个Slide中元素显示和消失的动画特效。此处需要建立两张表,一张表为Slide的切换效果列表,一张表为单个Slide中元素的动画显示效果。其中,本发明实施例中的XML文件为与其他系统的接口文件,其他需要生成PowerPoint文档的系统只需要按要求生成XML文件即可与本发明实施例实现无缝连接。
具体的,步骤S102包括:
对步骤S101中获取的基本元素信息按照PowerPoint的排版格式进行排版,主要过程是将XML中的文本最大化,理由是:由于PowerPoint的文本输入都是采用文本框的方式进行输入,所以如果一个文本框中的文本可以尽可能的大的话,将可以减少文本框的输入数目,调高了用户的编辑性。文本的最大化过程为:
首先是在水平方向上求闭包,将文本块合成文本行,按照水平坐标的从小到大的次序对文本块进行排列和输出,找到水平坐标最小的文本块,将水平坐标最小的文本块加入闭包,完后遍历其他的文本块,如果这个文本块的垂直位置和闭包中的文本块在一个水平位置,即可以横向切割,则将此文本块加入行闭包,依次类推,即可将文本块按照行为单位进行合成。其次是在垂直方向上求闭包,将文本行合成为最大的文本段落,原理同求行闭包类似。
具体的,步骤S103包括:
按照PPTX文件格式生成文件夹和XML文件。此步骤负责将步骤S102得到的排版结果按照PowerPoint2007格式生成XML系列文件,以文件夹的形式进行输出。生成过程如下:
a、生成索引文件。索引文件[Content_Types].xml文件主要起两个方面的作用:一是索引文件夹内其他文件的位置;二是索引资源文件如图片和超链接等元素的信息,所以在每页的生成过程中在动态生成图片信息的同时要动态的修改[Content_Types].xml文件中的图片索引;
b、生成缩略图文件。缩略图文件thumbnail.jpeg为PPTX文件的缩略图文件,此文件为PPTX文件在缩略图显示模式下的封面图片,本发明实施例首先在内存DC中对开辟一块区域用于图片合成,之后将第一页中的元素按照图元、图像和文本的顺序输入,注意此处图元和图像的输入顺序是按照其层次顺序进行输入,在内存DC中绘图完毕后,使用JPEG库将该图片存为jpeg格式并重命名为thumbnail.jpeg并修改[Content_Types].xml文件中缩略图的的索引路径;
c、生成PPTX文档属性文件。本发明实施例采用presentation文件记录PPTX文档信息,首先从XML文件中读取到一个Page的宽和高,完后针对presentation中的ldSz关键字,进行Slide宽高的设置;
d、生成Slide文件。每写入一个新的Page页就需要生成一个Slide文件,该文件记录Slide中的基本信息,包括文本、图像、图元、动画特效和切换效果等。在生成图像对象的时候,首先需要在media文件中生成一个图像文件,并将该图像文件的位置记录在索引文件中,其次需要二是在Slide文件中pic字段中记录图片控制信息。最后是将media中的图片索引添加到[Content_Types].xml文件中。
具体的,步骤S104包括:
(1)调用Zip压缩库将步骤S103中生成的XML系列文件生成PPTX压缩文件,注意此压缩过程对ZIP的压缩率没有特殊要求,只需要按照ZIP的算法要求将文件进行压缩即可;
(2)重命名PPTX文件,主要过程就是将*.zip重命名为*.PPTX即可。
本发明实施例由于直接生成PPTX文件,提高了转换的性能和稳定性,而且生成的PPTX文件可编辑性较高,并尽量保存了Slide间切换效果和Slide中元素的动画效果。
图2示出了本发明实施例提供的XML文档转换为PPTX文档的装置的结构。
所述装置包括信息读取模块21、排版模块22、文件生成模块23以及压缩转换模块24。
其中,信息读取模块21,用于读取XML文件中的基本元素信息;
排版模块22,用于对读取的XML文件中的基本元素信息按照PowerPoint的排版格式进行排版,获取一排版结果;
文件生成模块23,用于根据所述排版结果生成PowerPoint格式的XML系列文件;以及
压缩转换模块24,用于调用zip库对生成的XML系列文件进行压缩,并按照PPTX后缀的方式给压缩后的文件命名。
具体的,所述信息读取模块21具体包括:
读取库调用模块211,用于通过XML文件读取库将XML文件中的基本元素信息读出;
分组模块212,用于按照读取的基本元素信息的类型对元素进行分组,并对分组后各组的元素按照层次顺序进行重新排列;
输入模块213,用于将得到的排列结果输入到XML文件的中间数据结构中。
具体的,所述排版模块22具体包括:
闭包生成模块221,用于在水平方向上求闭包,将文本块合成文本行;
文本块获取模块222,用于按照水平坐标从小到大的次序对文本块进行排列和输出,获取水平坐标最小的文本块;
合成模块223,用于将水平坐标最小的文本块加入闭包。
在具体实施过程中,所述闭包生成模块221,还用于在垂平方向上求闭包,将文本块合成文本行;
所述文本块获取模块222,还用于按照垂直坐标从小到大的次序对文本块进行排列和输出,获取垂直坐标最小的文本块;
所述合成模块223,还用于将垂直坐标最小的文本块加入闭包。
具体的,所述压缩转换模块24具体包括:
索引文件生成模块241,用于生成索引文件;
缩略图文件生成模块242,用于生成缩略图文件;
PPTX文档属性文件生成模块243,用于生成PPTX文档属性文件;
Slide文件生成模块244,用于生成Slide文件。
本发明实施例在将XML文档转换为PowerPoint文档的过程中,在生成端直接写PPTX样式的XML文件,并将生成的文件按照zip的格式进行压缩进而生成PPTX文件,提高了XML文档转换为PPTX文档的转换效率和稳定性,提高了XML文档转换为PPTX文档的的通用性,能够方便的对转换后的文档进行修改。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而这些改进和变换都应属于本发明所附权利要求的保护范围。