使用Microsoft Word,可以把文档另存为PDF或XPS文件。XPS是XML纸张规范(XML Paper Specification),是WPF的一个子集。Windows包含一个XPS读取器。
因为XPS以ZIP文件格式打包,所以很容易把扩展名为xps文件重命名zip,打开该归档文件,来分析XPS文档。
XPS文件需要在zip文档中有XML纸张规范定义的特定结构。这个结构基于OPC,Word文档(OOXML或Office Open XML)也基于OPC。在这个文件中,可以包含用于元数据、资源和文档本身的不同文件夹。在XPS文档的文档文件夹中,可以找到表示XAML的XPS子集的XAML代码。
要创建XPS文档,可使用System.Windows.Xps.Packaging名称空间中的XpaDocument类。要使用这个类,也需要引用程序集RedchFramework。通过这个类可以给文档添加缩略图和固定文档序列,还可以给文档加上数字签名。固定文档序列使用接口希尔,该接口使用IXpsFixedDocumentWriter在序列中写入文档。
如果FixedDocument已经存在,写入XPS文档就有一个更简单的方法。不需要添加每个资源和每个文档也,而可以使用System.Windows.Xps名称空间中的XpsDocumentWriter类。要使用这个类,必须引用System.Printing程序集。
下面的代码段包含一个创建XSP文档的处理程序。首先创建用于菜单规划的文件名,它使用星期几和名称menuplan。星期几用GregorianCalender类计算。接着打开SaveFileDialog,让用户覆盖已创建的文件名,并选择在其中存储文件的目录。SaveFileDialog类在名称空间Microsoft.Win32中定义,它封装本地文件对话框。接着新建一个XpsDocumment,其中将文件名传送给构造函数。因为XPS文件使用ZIP格式压缩内容,所以使用CompressionOption可以指定压缩是在时间上还是空间上进行优化。