2013-04-03 85 views
2

問:有沒有辦法在WinRT的應用程序打印XPS文檔?打印XPS文檔中WinRT中的Windows Store應用

背景:我想從基於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

「或者沒有辦法直接從WinRT打印XPS文檔?」 - 這聽起來正確。他們似乎放棄了XPS/FlowDocument。

一個可能的解決辦法是讓自己XPS->的UIElement轉換器,然後將做必要的轉換。但是,正如你已經提到的,WinRT XAML是有限的。它有很多必要的東西被刪除。所以你很可能能夠做出「半解決方案」。

這是一篇好文章,解釋中的WinRT XAML可能的 「限制」:

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

我認爲可能的解決方案是:

1)你寫你自己的XPS光柵化是需要.XPS文件並將其轉換爲可以打印的PNG。這是很長的工作,如果不是更多,可能需要5-7個月。

2)只需使用XPS-> HTML轉換器。也許已經有完成這個的第三方庫?在WinRT中印HTML是可能的:P

3)看看你能不能把你的手給TallComponents。這樣你可以將XPS轉換成PDF到圖像。

+2

謝謝Erti。我有能力對XPS文檔進行柵格化,但我希望避免這種情況,因爲直接發送矢量數據效率更高。但似乎沒有選擇。 MS創建一個頁面描述語言很麻煩,然後沒有辦法以這種格式提供打印機數據。希望他們能在下一個版本的Windows中解決這個問題。 – James 2013-04-04 15:45:23