M
majorsoft
Unregistered / Unconfirmed
GUEST, unregistred user!
用epson LQ 1600kiii针式进行连打时,用的自定义纸张类型,纸张规格为218mm(宽) * 279 mm(高),但是每一张会有0.1mm左右的偏移,连续打印10~20张还接受,在进行大批量的连打时,偏移就很明显了,因为会累加,如100张时就有10mm左右的偏差,就必须手工切一下纸张, 然后由打印机自动退纸张到初始位置,然后继续打印,我想请教大家的是,有没有办法自动完成这个复位的过程(不需要人工干预切纸)
我目前知道有以下几个办法,但试了之后,还是没有解决问题,敬请各位指点:
测试环境 windows 2000 + epson LQ 1600kiii
1. 直接发送控制码,在windows 2k会报错"file access denied", 文件不可以访问,我的打印机是装在LPT1口的
SendPrintCode(Char(27) + '@');
//函数定义
function SendPrintCode(str: string): boolean;
var
F:TextFile;
begin
result:= false;
try
Assignfile(F,'LPT1');
rewrite(F);
Write(F, Str);
CloseFile(F);
result:= true;
except
end;
end;
2.通过在控制面板设置“自动切纸”,就可以解决该问题,但我找遍了打印机的属性页也没有发现。
3.设置模式为高精度英寸模式
SetMapMode(DeviceHandle, MM_HIENGLISH);
但是不知道如何设置英寸单位的纸张类型, 通过测试发现以下的还是 毫米的 模式。
有没有直接设置以英寸为单位的方法?
DevMode := GlobalLock(DeviceHandle);
if DevMode <> nil then
begin
//SetMapMode(DeviceHandle, MM_HIENGLISH);
DevMode^.dmPaperSize := DMPAPER_USER;
DevMode^.dmPaperLength := APaperH;
//自定义纸张高度 单位为 0.1mm
DevMode^.dmPaperWidth := APaperW;
//自定义纸张宽度
DevMode^.dmFields := DevMode^.dmFields or DM_PAPERSIZE;
DevMode^.dmFields := DevMode^.dmFields or DM_PAPERLENGTH;
DevMode^.dmFields := DevMode^.dmFields or DM_PAPERWIDTH;
ResetDC(Printer.Handle, DevMode^);
GlobalUnlock(DeviceHandle);
end;
敬请各位指点,问题可能比较复杂,可另加分。
我目前知道有以下几个办法,但试了之后,还是没有解决问题,敬请各位指点:
测试环境 windows 2000 + epson LQ 1600kiii
1. 直接发送控制码,在windows 2k会报错"file access denied", 文件不可以访问,我的打印机是装在LPT1口的
SendPrintCode(Char(27) + '@');
//函数定义
function SendPrintCode(str: string): boolean;
var
F:TextFile;
begin
result:= false;
try
Assignfile(F,'LPT1');
rewrite(F);
Write(F, Str);
CloseFile(F);
result:= true;
except
end;
end;
2.通过在控制面板设置“自动切纸”,就可以解决该问题,但我找遍了打印机的属性页也没有发现。
3.设置模式为高精度英寸模式
SetMapMode(DeviceHandle, MM_HIENGLISH);
但是不知道如何设置英寸单位的纸张类型, 通过测试发现以下的还是 毫米的 模式。
有没有直接设置以英寸为单位的方法?
DevMode := GlobalLock(DeviceHandle);
if DevMode <> nil then
begin
//SetMapMode(DeviceHandle, MM_HIENGLISH);
DevMode^.dmPaperSize := DMPAPER_USER;
DevMode^.dmPaperLength := APaperH;
//自定义纸张高度 单位为 0.1mm
DevMode^.dmPaperWidth := APaperW;
//自定义纸张宽度
DevMode^.dmFields := DevMode^.dmFields or DM_PAPERSIZE;
DevMode^.dmFields := DevMode^.dmFields or DM_PAPERLENGTH;
DevMode^.dmFields := DevMode^.dmFields or DM_PAPERWIDTH;
ResetDC(Printer.Handle, DevMode^);
GlobalUnlock(DeviceHandle);
end;
敬请各位指点,问题可能比较复杂,可另加分。