设为首页 友情链接
在线留言 发表文章
加入收藏 广告联系

刺猬首页

| 专案技术 | 网络技术 | 图形图象 | 网络编程 | 网页设计 | 操作系统 | 服务器 | 技术白皮书 | 在线实验室 | 刺猬论坛 |
小说专版  | 数据库 | 设计赏析 | 存储频道 | 网络安全 | 私服架设 |  Solaris | 网站评估 | PC维护技巧 | 下载中心 | 博 客 |
专   题: | Linux | java | cisco | 防病毒 | 刀片 | SOA | iscsi | ASP.NET | SQL | Oracle |
您现在的位置: IT公社 IT community >> Linux专题 >> Linux应用技巧 >> 教程正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
Linux Apache服务器系统…
Linux操作系统下如何配置…
在Linux系统下面架设Sen…
Linux系统Apache用户授权…
如何测试和调试Linux的A…
在Linux操作系统下如何开…
Linux系统下Apache服务器…
Apache+PHP5.0+GD+Zend+…
有备无患 Linux服务器备…
Ubuntu 6.10 Linux php+…
  Windows 打印选项在Linux 上移植         
Windows 打印选项在Linux 上移植
 

移植是实现传统高层应用程序跨平台运行的一项核心技术。打印子系统移植是应用程序移植的重要组成部分。实现打印选项设置模块在不同平台上的用户接口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联盟收集整理

频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。

原始作者:佚名 录入时间:2007-3-31 2:13:45
信息来源:不详 投稿信箱:itqoo@126.com
教程录入:itqoo    责任编辑:itqoo 
  • 上一个教程:

  • 下一个教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    - 关于我们 - 合作伙伴 - 友情链接 - 广告刊登 - 投稿热线 - 在线留言版权声明联系方式 -
    IT公社版权所有 粤ICP备05127012号
    Copyrigh@2005-2006 itqoo.com.Inc All Rights Reserved  推荐分辨率 1024*768
    联系站长:E-Mail:itqoo@126.com     MSN:urchincc@hotmail.com    QQ:点击这里给我发消息
    特别感谢:亿太网络提供空间支持