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

Printing 直接在WinRT Windows应用商店应用程序中打印XPS文档,printing,windows-8,windows-runtime,winrt-xaml,Printing,Windows 8,Windows Runtime,Winrt Xaml,问题:有没有办法在WinRT应用程序中打印XPS文档 背景:我想从基于XAML的Windows应用商店应用程序打印XPS文档,但这似乎是不可能的。标准桌面方法不适用于Windows应用商店应用程序。WinRT特定的/方法需要一个实际的UIElement,但WinRT XAML不支持所有XPS功能,例如非矩形剪裁路径、不透明度遮罩等(它似乎也不支持,但这是另一回事。)那么,我是否遗漏了什么,或者无法从WinRT直接打印XPS文档?因为Windows使用XPS作为其打印路径,所以无法直接提供用于打印

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

背景:我想从基于XAML的Windows应用商店应用程序打印XPS文档,但这似乎是不可能的。标准桌面方法不适用于Windows应用商店应用程序。WinRT特定的/方法需要一个实际的UIElement,但WinRT XAML不支持所有XPS功能,例如非矩形剪裁路径、不透明度遮罩等(它似乎也不支持,但这是另一回事。)那么,我是否遗漏了什么,或者无法从WinRT直接打印XPS文档?因为Windows使用XPS作为其打印路径,所以无法直接提供用于打印的XPS数据似乎很奇怪

更新:我花了更多时间尝试直接打印XPS文档。Direct2D提供了一个打印接口,但仅限于其API。我想直接发送XPS数据,但表示“Windows打印子系统和打印机组件……对Direct2D应用程序完全隐藏。”目前,我能看到的打印XPS文档的唯一方法是将它们转换为一系列Direct2D命令,然后由应用程序立即转换回XPS。这似乎不必要且效率低下。

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

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

这篇文章很好地解释了WinRT XAML中可能存在的“限制”:

我认为可能的解决办法是:

1) 您可以编写自己的XPS光栅化器,它接受.XPS文件并将其转换为可以打印的PNG。这是一项漫长的工作,可能需要5-7个月甚至更长的时间

2) 只需使用XPS->HTML转换器。也许已经有第三方库实现了这一点?可以在WInRT中打印html:P


3) 看看你能不能把你的手拿过来。通过这种方式,您可以将XPS转换为PDF格式并将其转换为图像

谢谢你。我有能力光栅化XPS文档,但我希望避免它,因为直接发送矢量数据更有效。然而,似乎别无选择。奇怪的是,MS创建了一种页面描述语言,却没有提供以这种格式提供打印机数据的方法。希望他们能在下一版本的Windows中解决这个问题。