直接在WinRT Windows应用商店应用中打印XPS文档

时间:2013-04-03 19:45:00

标签: printing windows-8 windows-runtime winrt-xaml

问题:有没有办法在WinRT应用中打印XPS文档?

背景:我想从基于XAML的Windows应用商店应用中打印XPS文档,但这似乎是不可能的。标准桌面方法StartXpsPrintJob不适用于Windows应用商店应用。 WinRT特定的Windows.UI.Xaml.Printing / Windows.Graphics.Printing方法需要实际的UIElement,但WinRT XAML不支持所有XPS功能,例如非矩形剪切路径,不透明蒙版等。(它似乎也没有支持printing Glyph elements,但这是另一个故事。)那么,我是否遗漏了某些内容,或者无法直接从WinRT打印XPS文档?由于Windows使用XPS作为其打印路径,因此无法直接提供XPS数据进行打印,这似乎很奇怪。

更新:我花了更多时间尝试直接打印XPS文档。 Direct2D提供打印接口,但其API仅accept Direct2D commands。我想直接发送XPS数据,但this page说“Windows打印子系统和打印机组件......完全隐藏在Direct2D应用程序之外”。目前我可以看到打印XPS文档的唯一方法是将它们转换为一系列Direct2D命令,然后由PrintControl立即将其转换回XPS。这似乎是不必要和低效的。

1 个答案:

答案 0 :(得分:1)

“或者无法直接从WinRT打印XPS文档?” - 听起来不错。他们似乎放弃了XPS / FlowDocument。

一种可能的解决方法是自己制作XPS-> UIELEMENT转换器,然后进行必要的转换。但是,正如您已经提到的,WinRT XAML是有限的。它有很多必要的东西被删除。所以你很可能会做出“半解决方案”。

这是解释WinRT XAML中可能的“限制”的好文章:

http://blog.tallcomponents.com/2012/04/rasterizing-winrt.html

我认为可能的解决方案是:

1)你编写自己的XPS Rasterizer,它获取.XPS文件并将其转换为可以打印的PNG。这是一项冗长的工作,如果不是更多,可能需要5-7个月。

2)只需使用XPS-> HTML转换器。也许第三方图书馆已经完成了这项工作?可以在WInRT中打印html:P

3)看看你是否可以接触TallComponents。这样您就可以将XPS转换为PDF到IMAGE。