GDI到XPS

在他的博客文章中,将文档打印到Microsoft XPS Document Writer中,无需用户交互。冯远说

如果您从自己的应用程序进行打印,则可以很容易地将MXDW指定为打印机驱动程序,并提供要保存到XPS文档的文件名

任何人都可以解释如何做到这一点,并提供一个代码示例?

我遇到的主要问题是压缩Microsoft XPS Document Writerpopup的另存为对话框。 我不喜欢用黑客行为,因为袁在他的职位。

目前,我的应用程序使GDI在设备上下文中绘制用户想要使用的打印机。 我可以在XPS Document Writer上进行这些调用,但是当完成打印时,XPS Writer将popup“另存为”对话框。

事实上,同一作者提供了答案打印到Microsoft XPS文档编写器,而不显示文件保存对话框 。 解决方案是使用Microsoft XPS Document Writer打印机打印到文件。

如果你想避免使用你的XPS文档碰到文件系统,Shahed Kahn提供了从MemoryStream中加载Xps的示例代码。

以下是对我有用的东西:

With Me.PrintDocument With .PrinterSettings .PrinterName = "Microsoft XPS Document Writer" .PrintToFile = True .PrintFileName = "c:\test.xps" End With .Print() End With 

据我所知,这是无证的。 尝试一下,你不会得到可怕的另存为对话框。 相反,您将获得由MXDW(c:\ test.xps)生成的干净的XPS文件。