热点推荐
ZOL首页 > 服务器 > 知识学堂 > Linux > Windows系统打印选项在Linux上的移植

Windows系统打印选项在Linux上的移植


天新网 【转载】 2009年03月24日 19:01

 

移植是实现传统高层应用程序跨平台运行的一项核心技术。打印子系统移植是应用程序移植的重要组成部分。实现打印选项设置模块在不同平台上的用户接口UI(User Interface)转换是实现打印子系统移植过程中的一项核心技术。本文将重点阐述一种使用GNOME Print在Linux平台上实现Windows打印选项设置的移植方法。

本文第一节将简要介绍Windows平台上的打印设置和相关数据结构;第二节介绍Linux平台上GNOME Print的打印设置和相关数据结构;第三节介绍GNOME Print打印设置的移植架构;第四节介绍移植的细节;第五节则进一步讨论Linux平台上GNOME Print以外的打印设置方法;本文的简要总结在第六节中给出。

1. Windows打印选项设置


图1 Windows系统打印设置对话框

在Windows平台上,用户可以通过Windows系统打印设置对话框(如图1所示)来完成对打印选项的设置。程序员可以通过调用Windows API DocumentPropertIEs() 来获得该系统打印设置对话框。图1为一款EPSON打印机的打印设置对话框,用户可以通过该对话框来设置打印属性,如打印纸张的大小和纸张的方向等等。该对话框是Windows为用户提供的一个友好的前台UI界面;与之相对应的后台核心数据则被存储在Windows标准数据结构DEVMODE中。 DEVMODE结构的原形定义如下:

typedef struct _devicemode { BCHAR dmDeviceName[CCHDEVICENAME]; Word dmSpecVersion; WORD dmDriverVersion; WORD dmSize; WORD dmDriverExtra; DWORD dmFields; union { struct { short dmOrientation; //打印纸张方向 short dmPaperSize; //打印纸张名称 short dmPaperLength; //打印纸张长度 short dmPaperWidth; //打印纸张宽度 short dmScale; short dmCopies; short dmDefaultSource; short dmPrintQuality; }; POINTL dmPosition; DWORD dmDisplayOrientation; DWORD dmDisplayFixedOutput; };…}

在此简要介绍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中被定义为:

n_DevMode.dmPaperLengthn_DevMode. dmPaperWidth

这两个参数的单位为0.1毫米。

给文章打分 5分为满分(共0人参与) 查看排行>>
频道热词:LED照明  工作站  云计算  
视觉焦点
服务器知识学堂热点
排行 文章标题
TOP10周热门服务器排行榜
  • 热门
  • 新品
  • 系列
查看完整榜单>>