微软PostScirpt打印机驱动程序原理

    本文地址:http://tongxinmao.com/Article/Detail/id/253

    PostScript打印机驱动程序,即PostScript Printer Driver(Pscript)是微软公司PostScript打印机的标准打印机驱动程序。关于Pscript主要描述了下列一些主题:

     

    ■5.1Pscript能力

     

    ■5.2Pscript组件

     

    ■5.3Pscript小驱动程序

     

    ■5.4Pscript用户接口

     

    ■5.5Pscript绘制器

     

    5.1 Pscript能力

     

    PostScript打印机驱动程序提供了如下的能力:

     

    ■支持所有的PostScript打印机,用特定打印机的基于PPD的Pscript小驱动程序描述每一种打印机的特征。

     

    ■一个Pscript用户接口,基于树形视图控件及属性表单,对所有的打印机是一致的,但对每一种打印机的单独选项也是可以改变的。

     

    ■一个单独的Pscript绘制器,与GID图形引擎一起,将微软应用程序对Win32 GDI的调用转换成可以发送到打印假脱机的的打印机命令。

     

    ■支持文档结构转换的3.1版本标准(Document Structuring convertion V3.1),该标准在Adobe System ,Inc公司出版的PostScript Language Reference Manual中有描述。

     

    ■为打印机提供PostScript Level 1,Level 2,Leve3特性的支持。

     

    ■下列类型字体的支持:

     

    □增量可下载的OpenType字体,作为PostScript Type 1及 Type 2字体。

     

    □增量可下载的TrueType字体,作为PostScript Type 1、 Type 3、Type 32、Type 42或基于CID的Type 42字体。

     

    □增量可下载的主机驻留的光栅字体作为PostScript Type 3或者Type 32字体。

     

    □完全可下载的主机驻留的PostScript Type 1字体。

     

    □打印机驻留的PostScript Type1、Type2及CID字体。

     

    □存在于打印机字符集中的每一个可被替换符号的字体,

     

    ■对ICM2.0的支持,允许在主机系统上或通过打印机硬件来执行图形色彩管理。

     

     

    5.2 Pscript组件

     

     

     

    应用程序

     

    一个用户的应用程序,如可给用户提供打印能力的字处理程序。

     

     

    gdi32.dll

     

    用户模式的DLL,导出Wind32 GDI函数

     

     

    内核模式的图形引擎

     

    实现GDI功能的Windows NT 执行代码

     

     

    小驱动程序文本文件

     

    基于文本的Pscript小驱动程序,用PPD文件创建

     

     

    二进制数据文件

     

    Pscript在解析包含于小驱动程序的文本文件中的信息后创建的临时文件(具有.bpd扩展名)

     

     

     

    ps5ui.dll

     

    Pscript用户接口的DLL,向所有的支持Pscript的打印机提供通用的UI代码。

     

     

    用户接口插件

     

    可选,特定打印机的用户接口插件。

     

     

    compstui.dll

     

    为打印机的CPSUI用户接口

     

     

    pscript5.dll

     

    pscript 绘制器,它处理文本输出并绘制图像,然后发送文本数据及图像数据到打印假脱机。

     

     

    绘制插件

     

    可选,特定打印机的绘制插件

     

    5.3 Pscript小驱动程序

     

    Pscript的小驱动程序是从.ppd及.ntf文件创建的。

     

     

    PPD文件

     

    基于文本的PostScript printer Description(.ppd)文件,描述了PostScript打印机的特征。Pscript驱动程序对Windows 2000支持的.ppd文件是与Adobe Systems Inc公司的v4.3版的PPD规范说明相兼容的。Pscript读一个打印机的.ppd文件并将文本转换为二进制的格式,在本地存储为一个.bpd文件并在.ppd文件每一次改变时被重新生成。

     

     

    NTF文件

     

    Windows 2000字体文件(.ntf文件)是用于描述由Pscript支持的打印机的设备字体。

     

    微软提供了一个默认的.ntf文件,名为pscript.ntf,它包含有对遇到的US设备字体的通用描述。对Far East打印机,微软也提供了一个默认的.ntf文件,名称为pscriptfe.ntf,它包含对遇到的Far East打印机字体的通用描述。

     

    另外,硬件厂商可以提供没有被pscript.ntf支持的设备字体描述。这些字体描述可以由转换AFM文件到NTF文件来被创建。定制的、特定模型的打印机可以通过将它们列为独立的打印机INF文件来安装。更多的信息,可以参考安装Pscript小驱动程序部分的内容。

     

    Pscript根据最先检查到的特定打印机模型的.ntf文件来搜索字体的规格,然后用第一次发现的字体描述来检查pscript.nft文件。

     

     

    5.3.1转换AFM文件到NTF文件

     

    对Windows 2000,Adobe Font Metrics(AFM)文件必须被转换为.ntf文件。一个名为makenft.exe的命令行工具可以执行这一转换,该工具在本DDK中也提供。

     

    为转换一个或多个.afm文件,用下面的命令语法:

     

    makentf NTF_FileName.ntf AFM_FileName[-v][-o]

     

    这里,NTF_FileName是一个要被产生的.ntf文件的名称,AFM_FileName是一个或多个将被转换的AFM文件名称。

     

    下面的命令行选项也是支持的:

     

    -v

     

    冗余式。该选项创建一个包含对产生的NFT文件的文本式显示的命令输出流。

     

    -o

     

    省略标准的西文字符集。默认情况下,在产生.ntf文件时makentf包括一个标准的西文字符集。如果正在创建多个.ntf文件,只要所有的文件是一起使用,只需要在一个文件中包括西文字符集。例如,假设想创建一个包含罗马字体规格和另外一个包含日文字体规格的.ntf文件,可以使用下面的命令:

     

    makentf roman.ntf roman1.afm roman2.afm roman3.afm

     

    makentf –o jpn.ntf jpn1.afm jpn2.afm jpn3.afm

     

    如果这些文件被一起使用,西文字符集信息总可以从roman.ntf文件获得,因此,在jpn.ntf文件中重复这样的信息是不必要的,只能是浪费附加的空间。另外一方面,如果jpn.ntf单独使用,-o就必须被指定。

     

    另一个命令语法也是被支持的,如下:

     

    makentf filename

     

    这里filename是一个接收输出文本的文件名,该语法导致makentf以创建一个文件,这个文件包含PostScript字符名称列表及被makentf所知的每一个代码页的Unicode值。

     

    另外一个文件,PSFamily.dat,是该DDK提供的并必须驻留在与包含makentf.exe文件同一目录的位置。这是一个文本文件,它可以向makentf提供每一种字体的显示及家族名称。

     

    在一个标准的.afm文件被转换之前,必须加入下面一行:

     

    Comment UniqueID Idnumberi

     

    这里Idnumber表示字体的唯一标识符,由字体的厂商发布的。

     

    一个将被转换成.ntf文件的.afm文件可以包含FontBBox2关键字。这个关键字的参数与FontBBox(参考Adobe System Inc.的Adobe字体规格文件格式规范说明)的那些参数非常相似,除了FontBBox2参数为所有在指定字符集(如90ms)中的字符描述了一个限制框,而FontBBox参数为所有在.afm文件中描述的字符联合描述限制框。如果FontBBox2没有被发现,则为FonBBox指定的值将被用于限制框。

     

     

     

    5.3.2安装Pscript小驱动程序

     

    安装Pscript小驱动程序需要一个打印机的printer.inf文件,它标识了小驱动程序的文件。如果一种打印机模式不被微软的打印机的inf文件、ntprint.inf文件所支持,就需要有厂商提供的.inf文件。.inf文件应当引用定义于ntprint.inf中的printer.inf文件数据部分及printer.inf文件的安装部分。对一个名称为abc100的小驱动程序,下面的.inf条目是通常需要的:

     

    [Manufacturer]

     

    “ABC Printers”

     

    [ABC Printers]

     

    “ABC Printer 100 PS”=ABC100.PPD,ABC_Printer_100_PS

     

    [ABC100.PPD]

     

    CopyFiles=@ABC100.ppd ;PPD file

     

    DataSection=PSCRIPT_DATA ;PSCRIPT Data Section

     

    DataFile=ABC100.ppd

     

    Include=NTPRINT.INF ;Include NTPRINT.INF

     

    Needs=PSCRIPT.OEM ;Install PSCRIPT

     

    如果提供了用户接口插件或绘制插件,需要在.inf文件中包括这些组件的名称。更多的关于安装定制代码的信息,参考第7章安装定制驱动程序组件部分的内容。

     

    5.4 Pscript用户接口

     

    Pscript用户接口用CPSUI以创建下面的属性表面页面:

     

    ■打印机属性表单的设备设置(Device Settings)页面,当一个用户从打印文件夹或打印机窗口选择了属性菜单项目时它就会显示。该页面列出了打印机专用的配置信息。

     

    ■文档属性表单的布局(Layout)、纸张/质量(Paper/Quality)、高级(Advanced)等页面。这些页面会在用户选择了从打印文件夹或打印机窗口的打印优选项(Printing Preference)菜单项时显示。或者一个应用程序调用PrinterProperties或DocumentProperties函数(在平台的SDK文档中描述)。这些页面列出了特定文档的配置信息。

     

    这些属性表单页面包含了打印机的特性及由打印机的Pscript小驱动程序指定的打印机的选项。也允许用户修改这些选项值。

     

    Pscript用户接口是作为一个用户模式的打印机接口DLL来实现的。在这一DLL中的代码,与CPSUI连接起来,指定了属性表单页面的内容。基于小驱动程序中的信息,DLL在这些打印机可组合的选项上施加限制。它也确保了用户不去选择没有安装在打印机上的选项。

     

    可以通过提供一个用户接口的插件来修改Pscript提供的属性表单页面,这些内容在第7章中的定制微软打印机驱动程序部分描述。

     

    5.5 Pscript绘制器

     

    Pscript绘制器是作为一个打印机图形的DLL实现的,这样可以导出由微软设备驱动程序接口(DDI:Device Driver Interface)为图形驱动程序定义的函数。当一个应用程序调用图形设备接口(GDI:Graphics Deivce Interface)函数以向打印机设备发送文本及图像,内核模式的图形引擎调用绘制器的DDI函数。这些DDI函数帮助GDI绘制打印机作业的页面图像。

     

    绘制器同时也负责按照打印机命令序列发送文本及绘制图像到打印假脱机,假脱机然后直接将数据流及命令发送到打印机硬件。

     

    可以通过提供一个绘制插件来修改Pscript的绘制操作,这些内容也在第7章中的定制微软打印机驱动程序部分中描述。


    上一篇:Android连接网络打印机,jSocket连接网络打印机
    下一篇:把USB打印机映射到LPT端口