1、发票规格为:201*102mm,页边距为左:15mm, 上:25mm, 右:20mm,下:5mm,怎样才能在给定的范围内输出发票上的内容呢?请高手给出设计思路。2、我现在能将发票上的内容打印出来,但没有在如上给出的有效区域内打印,也就是页面设置有问题,我看了网上的一些函数如setPaperSize(x,y)都没有效果;还有象控制在(15mm,25mm)处开始打印也不能实现。本人急用,请高手赐教!
调试欢乐多
我也有这个问题
用Printer对像进行自定义打印,
几个函数似乎都不起作用啊?
device,driver,post:array[0..255]of char;
hdmode:THandle ;
pdmode:PDevMode;
begin
//设置打印机
Printer.PrinterIndex:=PT.PrintIndex;
//设置纸张大小
Printer.GetPrinter(device,driver,post,hdmode);
if hdmode<>0 then
begin
pdmode:=GlobalLock(hdmode);
if pdmode<>nil then
begin
pdmode^.dmPaperSize:=256;
//我的纸张大小是长25CM,宽14.5CM
pdmode^.dmPaperLength:=2500;
pdmode^.dmPaperWidth:=1450;
pdmode^.dmFields:=pdmode^.dmFields or DM_PAPERSIZE;
pdmode^.dmFields:=pdmode^.dmFields or DM_PAPERLENGTH ;
pdmode^.dmFields:=pdmode^.dmFields or DM_PAPERWIDTH;
ResetDC(printer.Handle,pdmode^);
GlobalUnlock(hdmode);
end;
end;我是用来打印条码标签的,此程序对大多数激光,和针式的打印机可以。
我用过EPSON-6200L,EPSON-1200,CONON-S400SP,EPSON-K300+等等!!!
哎!我都快繁死乐!!!能交流以下吗???
邮箱是[email protected]
按照你给的代码是可以实现自定义纸张设定,但是我现在要先列出联在本机上的所有打印机,然后选择一台,进行打印,但是在这种情况下上述的自定义纸张过程就失效了。不知各位有没有遇到这种问题,请指教。
http://tansuo.51.net/
var
device:array[0..255] of char;
driver:array[0..255] of char;
port :array[0..255] of char;
hdmode:thandle;
pdmode:pdevmode;
begin
printer.PrinterIndex:=printer.PrinterIndex;
printer.GetPrinter(device,driver,port,hdmode);
if hdmode<>0 then begin
pdmode:=globallock(hdmode);
if pdmode<> nil then begin
pdmode^.dmFields:=pdmode^.dmfields or dm_papersize;
pdmode^.dmPaperSize:=dmpaper_legal;
pdmode^.dmFields:=pdmode^.dmFields or dm_papersize or dm_paperwidth or dm_paperlength;
pdmode^.dmPaperSize:=dmpaper_user;
pdmode^.dmPaperWidth:=200;
pdmode^.dmPaperLength:=200;
pdmode^.dmFields:=pdmode^.dmFields or dmbin_manual;
globalunlock(hdmode);
end;
end;
printer.PrinterIndex:=printer.PrinterIndex;
printer.BeginDoc;
printer.Canvas.TextOut(10,10,formatfloat('0.00',strtofloat(edit1.Text)));
printer.Canvas.TextOut(10,40,formatfloat('0.00',strtofloat(edit2.Text)));
printer.EndDoc;