急、急、急!!请教如何打印自定义连续打印纸张的大小?(100分)

  • 主题发起人 主题发起人 小宇飞刀
  • 开始时间 开始时间

小宇飞刀

Unregistered / Unconfirmed
GUEST, unregistred user!
[?]近为供电公司做一程序,要求打印电费缴纳通知单,客户提供的打印机为富士通3600K(兼容LQ1600K),
打印纸为190*93mm的三联连续打印纸,我在delphi中自定义了的190*93mm的纸张,结果打印机不打印,只会
移动一下打针头,请教这是为何并如何解决它(其他方法亦可)?客户催着要我交货.HELP ME!!!
 
万分感谢!!另:
执行:Printer.Canvas.TextOut(100,100, 'Test 1');后,第一页是否会出现"Test 1"字样并自动走一页自设定纸张?
若是,可否不出现“Test 1”且不浪费一张纸?
 
在执行打印前调用以下函数:
procedure SetPaperSize(X, Y: Integer);
// 单位是0.1mm
// A4时 Printer.Pagewidth:=1440; A5时 Printer.Pagewidth:=1049;
// B5时 Printer.Pagewidth:=1290; 16K时 Printer.Pagewidth:=1035;
// lq1600宽行打印机这个值宽度最大为42cm左右, 长度大约2m。
//改变devicemode结构
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
if (x = 0) or (y = 0) then
begin
{Set to legal}
pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize;
{pDMode^.dmPaperSize := DMPAPER_LEGAL;
changed by wulianmin}
pDMode^.dmPaperSize := DMPAPER_FANFOLD_US;
end
else
begin
{Set to custom size}
pDMode^.dmFields := pDMode^.dmFields or
DM_PAPERSIZE or
DM_PAPERWIDTH or
DM_PAPERLENGTH;
pDMode^.dmPaperSize := DMPAPER_USER;
pDMode^.dmPaperWidth := x {SomeValueInTenthsOfAMillimeter};
pDMode^.dmPaperLength := y {SomeValueInTenthsOfAMillimeter};
end;
{设定纸张来源}
pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL;
pDMode^.dmDefaultSource := DMBIN_MANUAL;
GlobalUnlock(hDMode);
end;
end;
Printer.PrinterIndex := Printer.PrinterIndex;
//以下开始打印
Printer.begin
Doc;
Printer.Canvas.TextOut(100,100, 'Test 1');
Printer.EndDoc;
end;

下面的语句:
Printer.begin
Doc;
Printer.Canvas.TextOut(100,100, 'Test 1');
Printer.EndDoc;
可以不写在上面的程序里.上面的程序只是打印前的设置
 
后退
顶部