论文部分内容阅读
摘要:XPS(XML Paper Specification)格式将是Microsoft Windows Vista中用于电子文档发布的首选格式,是继PDF文件格式之后的一种新的输出文件类型。在微软和各大印刷硬件厂商的支持下,XPS将有望超越PDF成为全球电子文档发布的开放式标准。本文针对XPS文档的几种快速页面处理方法给出了设计方案与实现。
关键词:XPS;页面处理;缩放;旋转;反转
中图分类号:TP317文献标识码:A文章编号:1009-3044(2007)03-10748-02
1 引言
电子文档已经改变了人们发布和交流信息的方式。虽然很方便,但是这一过程并不是完美无缺的。对于当今的软件,文档通常在屏幕上显示为一种方式,而打印时又显示为另一种方式。许多电子文档格式依赖于本地安装的软件、字体和其他资源。在不同的计算机上查看文档时,文档会显示成不同的页面布局,图像颜色和字体风格都有可能发生变化,从而改变了文档的外观。因此,从来的文档的外观在很大程度上取决于查看文档的位置和方式。
Microsoft正在利用下一代操作系统Vista的新技术作为平台,开发了一系列文档的技术解决这些问题,该技术将包含在 Windows Vista 之中。这项新技术的组成部分之一是 XML Paper Specification (XPS)。XPS技术使作者能够确信下一个查看或打印其文档的人将看到与作者的意图完全相同的文档。
更为重要的是,XPS Document 是由一个基于 XML 的语言描述的固定格式文档。XPS使用一个公开发布的规范描述这一格式,该规范可以无偿使用。由于不是私有文件格式,而且免费地使用,XPS格式文件的普及以及直接支持XPS格式的扫描印刷设备的涌现将成为定局。随着XPS成为发布电子文档格式的标准,针对适合于维护电子化页面视图描述XPS文档格式的文档印前页面处理技术已经成为研究的方向。
电子文档页面处理的范畴很广,旋转与缩放是基本的电子文档布局处理之一,当用户的打印机或驱动不支持缩放,或者不能调整输出纸张的纵横与正反的时候,就有可能需要用软件方式缩放,或旋转XPS文档的某个页面,实现电子文档的印前处理,简化印刷工作流程。
XPS从设计上就没有想到它有可能被编辑,如果使用微软公布的API,对XPS文档页面的任何的细小的修改将导致整个文档的重新生成,效率上十分不经济,这限制了它的应用。本文介绍的XPS格式的页面处理技术,利用了其页面描述语言XAML的特性,由于不涉及文档结构的修改,它们可以在XML级别实现。是一种与编程语言,操作系统无关的页面处理技术。
下面将阐述XPS文档格式的结构,然后以页面的缩放,旋转,反转,平移4个基本的应用为例,提出对XPS格式的电子文档版式处理的解决方案。
2 XPS文档结构
XPS文档的压缩遵循着Open Packaging Conventions (OPC)规范。从文件物理结构上说,XPS Document 是一个压缩的ZIP存档文件包,通过工业标准的ZIP压缩,可以挽回一些由于它使用基于XML语言从而产生的空间效率的浪费。XPS文件包具有规范的物理和逻辑组织。物理组织包含包中的文档部件和文件夹,而逻辑组织是由文档部件描述的层次结构。XPS的规格描述中详尽中定义了一组逻辑层上的命名规则规范。
XPS Document 的部件以一个逻辑层次结构进行组织,其中 FixedDocumentSequence 部件位于顶部。XPS文件包可能包含多个固定格式文档(FixedDocument),而且这些文档的顺序由 他们在FixedDocumentSequence中的位置决定。FixedDocumentSequence引用 FixedDocument,后者进而引用该包中每个文档的页面(FixedPage)。每个 FixedDocument将该文档的页面作为 FixedPage引用。每个 FixedPage 部件都包含该文档中页面的文本标记和布局,以及对该页中使用的图像、字体和其他资源的引用。
图1 XPS Document的逻辑层次结构的例子
FixedPage的页面布局描述语言使用的是一个XAML的子集。XAML是Microsoft针对下一代应用程序界面的开发而定制的一种全新的标记语言。XAML引入强大的XML语言的扩展优势,将图形界面的元素通过一种全新的方式进行正确地配置。正是由于使用XAML作为页面描述语言,使得XPS的页面布局的表现能力与表现精度上远远超越传统EMF图元文件格式以及印刷业界广泛使用的PostScript格式。
3 XPS页面处理
3.1 FixedPage的语法格式
要实现XPS文档的页面旋转缩放功能,就需要查看XPS格式说明书,了解FixedPage节点的定义描述:
图2 FixedPage标签的XML语法定义及其属性意义
其中,FixedPage的各属性的描述如下:
3.2 页面处理原理
FixedPage的所有子节点就是描述这个页面布局的可视化元素,为它们嵌套上一个带有合适的变换矩阵RenderTransform的Canvas标签以后可以改变页面布局,实现页面旋转,缩放和反转功能。Canvas是一个抽象的用来将组合图形元素的标签。它可以用来描述其包含的所有描画元素的公共特性,如位置,背景,大小等。
这个带有RenderTranform属性的Canvas标签形式如下:
被RenderTransform的Canvas标签含有的元素的坐标系将作下面的变换,原坐标系中的(X,Y)将被变换为(X',Y'):
用于确定RenderTransform矩阵可以通过缩放矩阵S,旋转矩阵R,反转矩阵C,与平移矩阵T这4个变换矩阵乘积计算得到的。
其中,各个变换矩阵可以通过如下计算得到。
(1)缩放矩阵的确定
(2)旋转矩阵的确定
(3)反转矩阵
4 平移矩阵的确定
对页面可视化元素作缩放,旋转,反转等版面变换之后,原来的页面的某个部分有可能伸展到可视区域之外,这时就需要将它们平移回可视区域中。
平移矩阵
虽然,页面内容的旋转可以靠给FixedPage的页面布局元素嵌套一个坐标转换矩阵的Canvas实现。但是,FixedPage的以上的4个属性(Width,Height,ContentBox,BleedBox)的坐标值不受嵌套的Canvas的约束,需要另行修改其值。其中,可视区域与剪裁区域在计算机屏幕上显示的时候没有意义,但是如果显式定义了,作为打印设置会被使用到。
缩放,旋转或者反转等页面处理的时候可以采取以下两种方式的一种来决定这两个区域:(1)相应调整它们的位置和大小保持它们与页面的相对位置不发生变化;(2)将这两个区域的显式定义删除,打印系统将把它们的区域解析为与FixedPage区域相同。
3.3 XPS页面处理流程
下面给出的针对XPS格式的电子文档页面处理的具体流程。
5 结束语
灵活利用以上版式处理方法,无需原文本格式的文件作再发布,就可以实现对XPS文档的页面版式的再调整。将文档付诸打印之前,完成如将多页合并到一页,或按纸张大小缩放等电子文档的版式调整。此文提出的页面处理技术是利用XPS的页面描述语言XAML的特性,在XML级别实现页面内容的变换处理,无需再次生成文档,是一种与编程语言和操作系统无关的XPS高速页面处理技术。在大批量处理XPS文档页面格式的场合,速度优势更加明显。
参考文献:
[1] Ian Griffiths & Chris Sells, Programming Windows Presentation Foundation[M]. O'Reilly and Associates, 2005.
[2] Microsoft Corporation. XPS Specification and Reference Guide[S]. http://www.microsoft.com/whdc/xps/default.mspx, 2006-10-18/2006-11-16.
[3] Brent Rector. Introducing "Longhorn" for Developers[EB]. http://www.microsoft.com/japan/msdn/longhorn/introducing/longhornch01.asp.
[4] Bob Watson. A first look at APIs for creating XML Paper Specification Documents[EB].http://msdn.microsoft.com/msdnmag/issues/06/01/XMLPaperSpecification/default.aspx.
本文中所涉及到的圖表、注解、公式等内容请以PDF格式阅读原文。
关键词:XPS;页面处理;缩放;旋转;反转
中图分类号:TP317文献标识码:A文章编号:1009-3044(2007)03-10748-02
1 引言
电子文档已经改变了人们发布和交流信息的方式。虽然很方便,但是这一过程并不是完美无缺的。对于当今的软件,文档通常在屏幕上显示为一种方式,而打印时又显示为另一种方式。许多电子文档格式依赖于本地安装的软件、字体和其他资源。在不同的计算机上查看文档时,文档会显示成不同的页面布局,图像颜色和字体风格都有可能发生变化,从而改变了文档的外观。因此,从来的文档的外观在很大程度上取决于查看文档的位置和方式。
Microsoft正在利用下一代操作系统Vista的新技术作为平台,开发了一系列文档的技术解决这些问题,该技术将包含在 Windows Vista 之中。这项新技术的组成部分之一是 XML Paper Specification (XPS)。XPS技术使作者能够确信下一个查看或打印其文档的人将看到与作者的意图完全相同的文档。
更为重要的是,XPS Document 是由一个基于 XML 的语言描述的固定格式文档。XPS使用一个公开发布的规范描述这一格式,该规范可以无偿使用。由于不是私有文件格式,而且免费地使用,XPS格式文件的普及以及直接支持XPS格式的扫描印刷设备的涌现将成为定局。随着XPS成为发布电子文档格式的标准,针对适合于维护电子化页面视图描述XPS文档格式的文档印前页面处理技术已经成为研究的方向。
电子文档页面处理的范畴很广,旋转与缩放是基本的电子文档布局处理之一,当用户的打印机或驱动不支持缩放,或者不能调整输出纸张的纵横与正反的时候,就有可能需要用软件方式缩放,或旋转XPS文档的某个页面,实现电子文档的印前处理,简化印刷工作流程。
XPS从设计上就没有想到它有可能被编辑,如果使用微软公布的API,对XPS文档页面的任何的细小的修改将导致整个文档的重新生成,效率上十分不经济,这限制了它的应用。本文介绍的XPS格式的页面处理技术,利用了其页面描述语言XAML的特性,由于不涉及文档结构的修改,它们可以在XML级别实现。是一种与编程语言,操作系统无关的页面处理技术。
下面将阐述XPS文档格式的结构,然后以页面的缩放,旋转,反转,平移4个基本的应用为例,提出对XPS格式的电子文档版式处理的解决方案。
2 XPS文档结构
XPS文档的压缩遵循着Open Packaging Conventions (OPC)规范。从文件物理结构上说,XPS Document 是一个压缩的ZIP存档文件包,通过工业标准的ZIP压缩,可以挽回一些由于它使用基于XML语言从而产生的空间效率的浪费。XPS文件包具有规范的物理和逻辑组织。物理组织包含包中的文档部件和文件夹,而逻辑组织是由文档部件描述的层次结构。XPS的规格描述中详尽中定义了一组逻辑层上的命名规则规范。
XPS Document 的部件以一个逻辑层次结构进行组织,其中 FixedDocumentSequence 部件位于顶部。XPS文件包可能包含多个固定格式文档(FixedDocument),而且这些文档的顺序由 他们在FixedDocumentSequence中的位置决定。FixedDocumentSequence引用 FixedDocument,后者进而引用该包中每个文档的页面(FixedPage)。每个 FixedDocument将该文档的页面作为 FixedPage引用。每个 FixedPage 部件都包含该文档中页面的文本标记和布局,以及对该页中使用的图像、字体和其他资源的引用。
图1 XPS Document的逻辑层次结构的例子
FixedPage的页面布局描述语言使用的是一个XAML的子集。XAML是Microsoft针对下一代应用程序界面的开发而定制的一种全新的标记语言。XAML引入强大的XML语言的扩展优势,将图形界面的元素通过一种全新的方式进行正确地配置。正是由于使用XAML作为页面描述语言,使得XPS的页面布局的表现能力与表现精度上远远超越传统EMF图元文件格式以及印刷业界广泛使用的PostScript格式。
3 XPS页面处理
3.1 FixedPage的语法格式
要实现XPS文档的页面旋转缩放功能,就需要查看XPS格式说明书,了解FixedPage节点的定义描述:
图2 FixedPage标签的XML语法定义及其属性意义
其中,FixedPage的各属性的描述如下:
3.2 页面处理原理
FixedPage的所有子节点就是描述这个页面布局的可视化元素,为它们嵌套上一个带有合适的变换矩阵RenderTransform的Canvas标签以后可以改变页面布局,实现页面旋转,缩放和反转功能。Canvas是一个抽象的用来将组合图形元素的标签。它可以用来描述其包含的所有描画元素的公共特性,如位置,背景,大小等。
这个带有RenderTranform属性的Canvas标签形式如下:
被RenderTransform的Canvas标签含有的元素的坐标系将作下面的变换,原坐标系中的(X,Y)将被变换为(X',Y'):
用于确定RenderTransform矩阵可以通过缩放矩阵S,旋转矩阵R,反转矩阵C,与平移矩阵T这4个变换矩阵乘积计算得到的。
其中,各个变换矩阵可以通过如下计算得到。
(1)缩放矩阵的确定
(2)旋转矩阵的确定
(3)反转矩阵
4 平移矩阵的确定
对页面可视化元素作缩放,旋转,反转等版面变换之后,原来的页面的某个部分有可能伸展到可视区域之外,这时就需要将它们平移回可视区域中。
平移矩阵
虽然,页面内容的旋转可以靠给FixedPage的页面布局元素嵌套一个坐标转换矩阵的Canvas实现。但是,FixedPage的以上的4个属性(Width,Height,ContentBox,BleedBox)的坐标值不受嵌套的Canvas的约束,需要另行修改其值。其中,可视区域与剪裁区域在计算机屏幕上显示的时候没有意义,但是如果显式定义了,作为打印设置会被使用到。
缩放,旋转或者反转等页面处理的时候可以采取以下两种方式的一种来决定这两个区域:(1)相应调整它们的位置和大小保持它们与页面的相对位置不发生变化;(2)将这两个区域的显式定义删除,打印系统将把它们的区域解析为与FixedPage区域相同。
3.3 XPS页面处理流程
下面给出的针对XPS格式的电子文档页面处理的具体流程。
5 结束语
灵活利用以上版式处理方法,无需原文本格式的文件作再发布,就可以实现对XPS文档的页面版式的再调整。将文档付诸打印之前,完成如将多页合并到一页,或按纸张大小缩放等电子文档的版式调整。此文提出的页面处理技术是利用XPS的页面描述语言XAML的特性,在XML级别实现页面内容的变换处理,无需再次生成文档,是一种与编程语言和操作系统无关的XPS高速页面处理技术。在大批量处理XPS文档页面格式的场合,速度优势更加明显。
参考文献:
[1] Ian Griffiths & Chris Sells, Programming Windows Presentation Foundation[M]. O'Reilly and Associates, 2005.
[2] Microsoft Corporation. XPS Specification and Reference Guide[S]. http://www.microsoft.com/whdc/xps/default.mspx, 2006-10-18/2006-11-16.
[3] Brent Rector. Introducing "Longhorn" for Developers[EB]. http://www.microsoft.com/japan/msdn/longhorn/introducing/longhornch01.asp.
[4] Bob Watson. A first look at APIs for creating XML Paper Specification Documents[EB].http://msdn.microsoft.com/msdnmag/issues/06/01/XMLPaperSpecification/default.aspx.
本文中所涉及到的圖表、注解、公式等内容请以PDF格式阅读原文。