BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Windows 8中的标准打印界面

| 作者 Jonathan Allen 关注 595 他的粉丝 ,译者 贾国清 关注 0 他的粉丝 发布于 2011年10月15日. 估计阅读时间: 2 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT