用程序打印压感纸,为什么打印完一个记录后,纸张又退回来?我的代码在里面:(100分)

  • 主题发起人 主题发起人 SevenOrient
  • 开始时间 开始时间
S

SevenOrient

Unregistered / Unconfirmed
GUEST, unregistred user!
是这样:
1。打印机是票据打印机。打印单页的时候是从前面送纸,打印完毕后又从前面倒退出纸张。
2。连页打时候(压感纸)的时候,从打印机前面进纸,从后面出纸张
3。我代码打印的是压感纸。为什么出现这种情况:打印完毕后又从前面倒退纸张?。
4。是不是我的纸张大小设置不对呀?但是我是用尺子量好的呀
5。我的部分代码:
testPrinterDaxiao ;//自定义纸张大小-----看后面
with printer do
begin
try
begin
Doc;
Canvas.Font.Name:='宋体';
Canvas.Font.Size:=10;
//Canvas.Font.Style:=[fsBold];
Canvas.TextOut(604,514,HEFANIAN);//合法年
Canvas.TextOut(709,514,HEFAYUE);//合法月
Canvas.TextOut(775,514,HEFARI);//合法日
newPage;//------------------------------------是不是这里的问题?
finally
EndDoc;
end;
end;
//自定义纸张大小:
procedure Tform1.testPrinterDaxiao ;
var
Device : array[0..cchDeviceName - 1] of Char;
Driver : array[0..(MAX_PATH -1)] of Char;
Port : array[0..32]of Char;
hDMode : THandle;
pDMode : PDevMode;
begin
Printer.GetPrinter(Device,Driver,Port,hDMode);
// 获 取 打 印 机DevMode 结 构 的 句 柄 值, 存 放 在hDMode 中
if hDMode <> 0 then
begin
pDMode := GlobalLock(hDMode);
// 获 取 指 向 打 印 机DevMode 结 构 的// 指 针
if pDMode <> nil then
begin
pDMode^.dmPaperSize := 256;
// 如 果 要 将 当 前 打 印 机 纸 张 变 为 自 定 义dmPaperSize 必 须 设 置 成256
pDMode^.dmPaperLength :=930;
//9.3cm
pDMode^.dmPaperWidth := 2950;
//29.5cm
pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE;
pDMode^.dmFields :=pDMode^.dmFields or DM_PAPERLENGTH;
pDMode^.dmFields :=pDMode^.dmFields or DM_PAPERWIDTH;
{ 以 上 三 条 语 句 是 对 相 应
的dmFields 成 员 进 行 置 位。}
ResetDC(Printer.Handle,pDMode^);
// 设 置 打 印 机 设 备 环 境 句 柄 的 值
GlobalUnlock(hDMode);
end;
end;
end;
 
忘给大家说了。我的打印代码是循环的。另外,据打印机公司人说,必须是N个指令,打印机的压感纸才从后面出来。。不 懂。
 
应该判断一下是不是到了最后一页。。如果是则不执行newpage语句。
 
前出纸和后出纸,这应是打印机硬设置的吧?
 
多人接受答案了。
 
后退
顶部