转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
设置打印机后台打印数据格式的几个办法         ★★★★

设置打印机后台打印数据格式的几个办法

作者:闵涛 文章来源:闵涛的学习笔记 点击数:734 更新时间:2009/4/23 18:29:15
先说说为什么要改变打印机后台打印数据格式的原因,这得从打印后台打印数据格式说起,一般SCRIPT打印机后台格式有多种,如RAW、EMF...,但RAW格式是唯一被全部打印机所支持。在远程打印中,只有RAW格式是被WINDOW支持的,这可以在MSDN中查到。另外,如果打印图像,除DIB图像外,部分打印机在采用EMF格式时无法打印,如HP LaserJet 1100。当然,如果采用GDIPLUS技术打印,在400DPI下也是可能正常打印,但当DPI大于400(具体上限没有测试),图像依然无法打印。

接下来,谈谈处理这个问题的几种办法:

不用说,这一种办法当然是打印机控制程序设置。招打,快闪!这个办法阿猫阿狗都会。

第二种办法,我是查了N多的资料才发现的,通过修改注册表中打印机参数,这其实也是这一种办法的变通办法,具体请看http://www2.lszy.net/tm/Article_Print.asp?ArticleID=804

第三种办法,能过调用WINSPOOL设置Printer_Info_2; ,这才是真正的设置打印机。

//取得当前打印机句柄
function TfrmPrint.GetCurrentPrinterHandle: THandle;
var
  Device, Driver, Port : array[0..255] of char;
  hDeviceMode: THandle;
begin
  Printer.GetPrinter(Device, Driver, Port, hDeviceMode);     //得到当前打印机名称
  if not OpenPrinter(@Device, Result, nil) then         //取得打印机句柄
    RaiseLastWin32Error;
end;

//初始设置打印机
procedure TfrmPrint.initPrintSet;
var
  hPrinter  : THandle;
  pInfo:  PPrinterInfo2;
  bytesNeeded: DWORD;
begin
  hprinter := GetCurrentPrinterHandle;
  try
    Winspool.GetPrinter( hPrinter, 2, Nil, 0, @bytesNeeded );      //取得printerInfo2的structure size
    pInfo := AllocMem( bytesNeeded );                                                     //分配空间 
    try
      Winspool.GetPrinter( hPrinter, 2, pInfo, bytesNeeded, @bytesNeeded ); //取得具体参数组
      pInfo.pDatatype :=''''RAW'''';                   //转成RAW格式
      SetPrinter(hPrinter,2,pInfo,0);                 //保存新的参数组
    finally
      FreeMem( pInfo );
    end;
  finally
    ClosePrinter( hPrinter );
  end;
end;

到此,设置完成,不过,我还是有几个疑惑,查MSDN得知printerInfo2.Attributes中的PRINTER_ATTRIBUTE_RAW_ONLY好像也是设置RAW格式,但一直无法使用。


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台