针式打印机走纸控制

04月 13th, 2008

下面简单介绍一下不易发现但需要注意的地方:
1、把epson lq-300k+ii的驱动程序换成epson lq-1600k。(我电话过epson的客服,对方告诉我epson lq-300k+ii的驱动是不支持走纸控制的,一定要换成epson lq-1600k!epson lq-1600k的驱动是xp自带的,只要在打印机安装里搜索一下就有它的驱动安装程序)。

2、我在测试的时候缺少连续进纸的那种两边带孔的连续纸(一般为财务用纸),所以,我用a4纸进行测试。由于进纸口不同,打印机在单页纸设置时是不支持进 走纸控制的。所以,之前几天的测试总是失败!记住:必须使用连续纸进纸!!且把打印机右边的“过纸控制杆”推在连续走纸的位置!

3、如果使用代码控制走纸请跳过本条直接看第4条。如果使用word 等软件打印的话,请继续看完本条。
开始——》设置——》打印机和传真——》窗口空白处右键单击——》服务器属性——》创建新格式——》纸张大小处请精确填写所须打印的纸张长宽——》确定——》确定

打印时,在所用软件的页面设置里对纸张进行设置。注意,不是打印设置中的纸张设置!!是文件——》页面设置!!
因为epson客服告诉我,该打印机是软件设置优先。对打印中的设置是驱动设置,会被页面设置中的软件设置覆盖掉!

4、如果使用代码控制,请参考下面代码:(vc++)(代码从其他地方借鉴而来,非本人编写。经测试,可以实现。)
bool printchitty()//打印函数
{ hdc printdc;
docinfo docin;

docin.cbsize = sizeof(docinfo);
docin.lpszdocname = "testdoc";
docin.lpszoutput = null;

cprintdialog printdialog(true,pd_allpages|pd_nopagenums,null);
// if(!printdialog.getdefaults()) return false; //如果不用打印设置对话框,使这一行有效

printdlg *pprintdlg = &printdialog.m_pd;
afxgetapp()->getprinterdevicedefaults(pprintdlg);
devmode* lpdevmode = (devmode*)::globallock(pprintdlg->hdevmode);
::globalunlock(pprintdlg->hdevmode);

lpdevmode->dmfields |= -1;//设定为自定义纸张尺寸, 如果用其他预定义的纸张尺寸,把这一行去掉,用下一行
//lpdevmode->dmpapersize = dmpaper_a5; //设定为 a5 纸

lpdevmode->dmpaperlength = 300;//设定纸长为 3 厘米
lpdevmode->dmpaperwidth = 300;//设定纸宽为 5 厘米

if(printdialog.domodal()!=idok) return false;//显示打印设置对话框(不显示把这一行去掉)

printdc = printdialog.createprinterdc();// 返回一个打印dc句柄
startdoc(printdc,&docin);// 启动打印工作
startpage(printdc); // 一页开始
textout(printdc,10,10,"打印内容",8);//打印内容
endpage(printdc); // 一页结束
enddoc(printdc);// 终止打印工作

if(deletedc(printdc))return true;// 删除打印机dc
else { ::messagebox("出错"); return false; }
}
5、点击确定!走纸范围被控制在你设定的纸张范围内啦~~~~

标签:, ,

相关日志


This entry was posted on 星期日, 04月 13th, 2008 at 5:09 pm and is filed under c语言教程. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply