投递人 itwriter 发布于 2011-10-15 08:20 评论(0) 有807人阅读  原文链接  [收藏]  « »

  Windows 8 Metro 即将带来诸多改变,其中就包含了打印特性。据传,微软将会为打印推出一套新 API 以及一个可扩展的用户界面。该 API 既可以被 XAML 型应用所调用,同样也适用于 JavaScript 型的应用。

  对打印机的支持一直是 Windows 的一个重要卖点。Windows 长期优于 IBM OS/2 并最终获得成功,其中关键因素就是提供了对打印机驱动程序的完美支持。然而,用户界面的设计一直被微软所忽视,同时应用程序也无心去创建自己的用户界面。

  首先要面临的问题是 .NET 提供的标准打印对话框。当在 Basic 程序中使用打印对话框时,可扩展性很有限。开发者除了通过拖拽控件来构建打印对话框以外,想要构建非标准的对话框几乎是很难的。在 Metro 中,PrintTaskAdvancedOptions 类为应用提供了自定义的打印机选项。这为文本框和选项列表控件提供了很好的扩展性,除此之外,在 XAML 和基于 JavaScript 的应用中的展现方式也是一致的。

  另外一个问题是打印预览窗口,每个程序都需要独自提供对打印预览的支持。Windows 8 Metro 中的解决办法是,将打印预览窗口和打印对话框绑定。如果应用只提供对打印的支持不支持打印预览,用户的打印操作就会被中断。

  打印的核心功能都是由 Windows.Graphics.Printing 命名空间提供。该 API 可同时被 XAML 和 JavaScript 应用所调用,而且理论上两种调用方式有着相同的用户体验。对于基于 JavaScript 的应用来说,开发者只需在应用中注册打印机,然后通过媒体库中提供的 CSS 来控制显示效果即可。

  对于基于 XAML 应用的开发者来说,需要使用 XAML 来为打印和预览页面设定布局。这点与 WPF 和 Silverlight 中的打印功能很相似,需要配置一个 PrintDocument 类实例的事件监听器。(该版本的类可以在 Windows.UI.Xaml.Printing 命名空间下找到)

  • AddPage:声明一个打印页面的实例
  • Paginate:当用户改变某项设置,可能导致重排文档页码时被触发
  • GetPreviewPage:声明一个预览页面的实例

  由于基于 Windows.UI.Xaml 命名空间,所以打印设置无法在 Metro 和桌面应用间共享。

  查看英文原文:A Standardized Printing UI for Windows 8

1
0
来自: InfoQ
找优秀程序员,就在博客园 分享到: 新浪微博 腾讯微博 搜狐微博
相关标签: Windows 8 .NET JavaScript
还没有人对此新闻发表评论,第一个发表评论。