我在做一个发票打印程序,以定义了纸张大小。
请问接下来我该怎么做才能达到发票中项目的精确打印,有没有这方面的控件?
Qreport或FastReport行么?(我的发票存根信息是从数据库中取出的)delphi打印操作我不是很熟悉,请各位帮帮忙。
谢谢了。我自定义的纸张大小,走纸没问题。
但我现在设置打印参数后再打印就出问题了。
Var
PrnDevice, PrnDriver, PrnPort: Array[0..255] Of Char;
PrnHandle: THandle;
PrnMode: PDeviceMode;
Begin
Printer.GetPrinter(PrnDevice, PrnDriver, PrnPort, PrnHandle);
If PrnHandle = 0 Then
Raise Exception.Create('无法获取系统打印机信息!')
Else
Begin
PrnMode:= GlobalLock(PrnHandle);
With PrnMode^ Do
Begin
//打印份数
dmFields:= dmFields Or dmCopies;
dmCopies:= 1; //打印方向
dmFields:= dmFields Or dmOrientation;
dmOrientation:= DMORIENT_PORTRAIT; //纸张大小
dmFields:= dmFields Or dmPaperSize;
dmPaperSize:= DMPAPER_USER; dmFields:= dmFields Or dmPaperLength;
dmPaperLength:= 2970;
dmFields:= dmFields Or dmPaperWidth;
dmPaperWidth:= 2100;
dmFields:= dmFields Or PrnMode^.dmLogPixels;
dmLogPixels:= 300;
ResetDC(Printer.Handle, PrnMode^);
End;
End;
End;
进行上面的操作后再打印走纸就不准确了,变得比以前长了很多。
请问是不是 dmLogPixels:= 300; 的问题。
我该怎么计算这个参数?另外,我想用代码建立自定义纸大小,写入注册表(Win9X and Win2K),该如何操作?
谢谢了!
请问接下来我该怎么做才能达到发票中项目的精确打印,有没有这方面的控件?
Qreport或FastReport行么?(我的发票存根信息是从数据库中取出的)delphi打印操作我不是很熟悉,请各位帮帮忙。
谢谢了。我自定义的纸张大小,走纸没问题。
但我现在设置打印参数后再打印就出问题了。
Var
PrnDevice, PrnDriver, PrnPort: Array[0..255] Of Char;
PrnHandle: THandle;
PrnMode: PDeviceMode;
Begin
Printer.GetPrinter(PrnDevice, PrnDriver, PrnPort, PrnHandle);
If PrnHandle = 0 Then
Raise Exception.Create('无法获取系统打印机信息!')
Else
Begin
PrnMode:= GlobalLock(PrnHandle);
With PrnMode^ Do
Begin
//打印份数
dmFields:= dmFields Or dmCopies;
dmCopies:= 1; //打印方向
dmFields:= dmFields Or dmOrientation;
dmOrientation:= DMORIENT_PORTRAIT; //纸张大小
dmFields:= dmFields Or dmPaperSize;
dmPaperSize:= DMPAPER_USER; dmFields:= dmFields Or dmPaperLength;
dmPaperLength:= 2970;
dmFields:= dmFields Or dmPaperWidth;
dmPaperWidth:= 2100;
dmFields:= dmFields Or PrnMode^.dmLogPixels;
dmLogPixels:= 300;
ResetDC(Printer.Handle, PrnMode^);
End;
End;
End;
进行上面的操作后再打印走纸就不准确了,变得比以前长了很多。
请问是不是 dmLogPixels:= 300; 的问题。
我该怎么计算这个参数?另外,我想用代码建立自定义纸大小,写入注册表(Win9X and Win2K),该如何操作?
谢谢了!
如果想要Report machine的源码可以联系[email protected]
--其实发票的打印和打印机的精度有很大的关系,这在我得实际应用中遇到过很多,明明16*18MM的发票有的牌子打印机非要自定义成16*19.5mm才能走纸准确,这不是编程能解决的。