首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>系统管理>桌面应用>正文

Windows 打印选项在Linux 上移植

http://www.oklinux.cn  2006-12-22  oklinux收集整理   会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn
移植是实现传统高层应用程序跨平台运行的一项核心技术。打印子系统移植是应用程序移植的重要组成部分。实现打印选项设置模块在不同平台上的用户接口UI(User Interface)转换是实现打印子系统移植过程中的一项核心技术。本文将重点阐述一种使用GNOME Print在Linux平台上实现Windows打印选项设置的移植方法。

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

1. Windows打印选项设置


图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.dmPaperLength
n_DevMode. dmPaperWidth

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

2. Linux GNOME Print打印选项设置

在Linux平台上,可以使用GNOME Print来实现打印设置功能。GNOME Print是GNOME支持Linux打印的模块。GNMOE Print涵盖了打印实现的各个方面,比如设置打印功能,生成打印文档,设置打印字体等等。以下仅针对GNOME Print中和设置打印选项相关的功能进行阐述。


图2 Linux GNOME Print系统打印设置对话框
图2  Linux GNOME Print系统打印设置对话框

Linux GNOME Print系统打印设置对话框如图2所示。该对话框是GNOME Print打印设置的前台UI界面。在GNOME Print中,打印设置的后台数据被封装在结构GnomePrintConfig中。同时,GNOME Print还提供了一系列函数,如gnome_print_config_set()和gnome_print_config_get(),来访问该结构。详细内容请参考第四小节。

Linux GNOME Print系统打印设置和Windows系统打印设置在数据接口和定义上是完全不同的。必须通过数据转换才能实现他们之间的互操作。这就是移植的核心,也是本文重点阐述的内容。

3. GNOME Print打印选项设置移植结构


图3 GNMOE Print打印选项设置移植结构
图3  GNMOE Print打印选项设置移植结构

图3展示了在Linux平台上实现Windows打印选项设置移植的基础结构。从图中可以看出,打印选项设置移植的核心就是实现不同平台数据接口的转换:即Windows平台打印选项设置结构DEVMODE和Linux GNOME Print打印选项设置结构GnomePrintConfig之间的转换。下一小节将详细阐述这些数据结构之间的转换细节。

4 GNOME Print打印设置移植细节

为了使用Linux GNOME Print实现打印设置,通常要引入下列头文件:


#include <libgnomeprintui/gnome-print-dialog.h>
#include <libgnomeprint/gnome-print.h>

在GNOME Print中,和前台UI对话框的相关的结构和接口被定义在第一个头文件中;而和后台数据处理相关的结构和接口则被定义在第二个头文件中。

使用GNMOE Print实现打印设置移植的流程如图4所示。以下将逐一讨论这个流程中的各个细节。


图4 GNMOE Print打印设置移植流程
图4  GNMOE Print打印设置移植流程

4.1 设置GNOME Print打印作业

启动GNOME Print打印设置的第一步是使用gnome_print_job_new() 来创建一个打印作业,即GnomePrintJob。每一个GnomePrintJob都和一个打印作业设置,即GnomePrintConfig,相关联。事实上,使用GNOME Print设置打印选项就是通过设置GnomePrintConfig来完成的。将参数NULL传递给gnome_print_job_new() 意味着创建一个新的GnomePrintJob,并用默认值设置和它关联的GnomePrintConfig。


上一篇:有关Linux操作系统的中文打印简介   下一篇:Linux中有优秀的办公字处理,表格及数据线图套件

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Linux中有优秀的办公字处理,表格及数据线图套件
·有关Linux操作系统的中文打印简介
·用Ndiswrapper在Linux中配置无线网卡
·Linux系统中提取DVD音频的方法介绍
·桌面应用:简谈Ubuntu之DIY发行版
·Gentoo下的多音频流完整解决方案
·Gentoo打印指南
·教你在Linux里实现Internet共享连接
·Linux无穷的魅力:MediaMVP播放器
·VNCServer 配置 及Vncview的使用
·用VNC远程登陆linux
·自已动手制作Linux下拼音五笔输入法
·让星际争霸在Linux操作系统下转起来
·vnc—server配置
·linux和windows不同OS环境下VNC的使用方法
·为Linux应用构造有限状态机方法(下)
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Aurorae: KDE 4 新的窗口边框主题引擎
·Google Chrome 主题库
·Bespin-被KDE4遗忘的主题
·10 套不错的 GNOME 主题
·无人值守安装Linux系统
·巧妙管理Linux服务器存储空间
·值得期待的Fedora 11操作系统新特性简
·面对CSS跨站攻击 IE与FireFox态度不一
·网友分享:在Linux系统上玩转磁盘阵列
·Ubuntu系统技巧之登录时查看“每日一句
·专家观点:Linux系统管理学习路线图
·开源办公软件 KOffice 2.0 Beta 7 发布
  阅读排行
·linux无线网卡设置与安装
·Ubuntu多媒体播放器的安装与配置
·VNCServer 配置 及Vncview的使用
·用新型D-BUS与Linux桌面应用程序通讯
·与微软相媲美! Ubuntu v8.04组图欣赏
·10 套不错的 GNOME 主题
·如何安装和使用wine
·菜鸟也疯狂:Linux桌面应用全攻略
·2008年Linux的25个顶级游戏
·安装Sony VAIO和HP Pavilion本本内置摄
·Linux高手过招:量身定制Linux桌面
·10套优秀的 Linux 图标 美化你的 Linux
·linux虚拟光驱介绍
·U盘Linux的制作
·引导装入工具Grub入门到精通
网摘收藏: