扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
移植是实现传统高层应用程序跨平台运行的一项核心技术。打印子系统移植是应用程序移植的重要组成部分。实现打印选项设置模块在不同平台上的用户接口UI(User Interface)转换是实现打印子系统移植过程中的一项核心技术。本文将重点阐述一种使用GNOME Print在Linux平台上实现Windows打印选项设置的移植方法。
本文第一节将简要介绍Windows平台上的打印设置和相关数据结构;第二节介绍Linux平台上GNOME Print的打印设置和相关数据结构;第三节介绍GNOME Print打印设置的移植架构;第四节介绍移植的细节;第五节则进一步讨论Linux平台上GNOME Print以外的打印设置方法;本文的简要总结在第六节中给出。
1. Windows打印选项设置
在Windows平台上,用户可以通过Windows系统打印设置对话框(如图1所示)来完成对打印选项的设置。程序员可以通过调用Windows API DocumentProperties() 来获得该系统打印设置对话框。图1为一款EPSON打印机的打印设置对话框,用户可以通过该对话框来设置打印属性,如打印纸张的大小和纸张的方向等等。该对话框是Windows为用户提供的一个友好的前台UI界面;与之相对应的后台核心数据则被存储在Windows标准数据结构DEVMODE中。 DEVMODE结构的原形定义如下:
|
在此简要介绍DEVMODE结构的三个重要参数:打印纸张名称,打印纸张方向,和打印纸张大小(长度和宽度)。其他参数由于篇幅限制,在此不作逐一解析,有兴趣的读者请参考MSDN。以下以n_DevMode为例进行说明:
DEVMODE n_DevMode;
(1) 打印纸张名称在Windows中被定义为:
n_DevMode.dmPaperSize
Windows将纸张名称预定义为一系列整数宏,如DMPAPER_LETTER,DMPAPER_A4等等。
(2) 打印纸张方向在Windows中被定义为:
n_DevMode.dmOrientation
该参数可以取如下两个值:DMORIENT_PORTRAIT表示纸张方向为纵向;DMORIENT_LANDSCAPE表示纸张方向为横向。
(3) 打印纸张的长度和宽度在Windows中被定义为:
|
这两个参数的单位为0.1毫米。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者