如何清除不可打印区域?

chenylin 2004-10-31 10:52:53
因为打印机由于驱动程序的原因,在物理的顶边距和左边距、底边距等都有一个1~2厘米的不可打印区域,如何清除它,让打印机从物理的(0,0)开始打印直到物理的底边?
...全文
209 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyguo 2004-11-03
  • 打赏
  • 举报
回复
niu
ksaiy 2004-11-03
  • 打赏
  • 举报
回复
发布到其它盒子和playicq去吧.这样下载的人多点.
ksaiy 2004-11-03
  • 打赏
  • 举报
回复
呵呵:)

SEE SEE
chenylin 2004-11-03
  • 打赏
  • 举报
回复
经过查询资料,花了一点时间编写了一个票据打印控件,该控件是专为进行连续纸票据打印而设计,适应于大多数的针式打印机。下载地址:http://www.chinahdc.com/download/software/pjprint.rar,欢迎大家试用。
ksaiy 2004-11-01
  • 打赏
  • 举报
回复
恩。还有打到底边的话增加值就行了。
hsmserver 2004-11-01
  • 打赏
  • 举报
回复
支持这种方式
chenylin 2004-11-01
  • 打赏
  • 举报
回复
按 ksaiy(消失在人海) 说的:将打印机设为150*93MM之后,最后一行从82MM开始,但无论如何,最后一行就是打不出来,只有把纸张设为150*96MM,最后一行倒是打印出来了,但走纸又不对了......,用的是star 6400平推票据打印机,是150*93MM的连续打印纸。

ksaiy 2004-11-01
  • 打赏
  • 举报
回复
不知道你的打印机是针式还是喷墨等其它打印。。。

如果是针式的话你可以人为的来进行控制。有点麻烦。

减去偏差值,如下:
Printer.BeginDoc;
Printer.Canvas.TextOut(-dx,-dy,'delphi');
Printer.EndDoc;
这样你测试着打就可以弄到0了。


ksaiy 2004-11-01
  • 打赏
  • 举报
回复
没有打印机测试不了,按你说的这样只要设置纸张大小就应该可以了。

你看看这个:
procedure printer_set;
var
Device:Array[0..256] of Char;
Driver:Array[0..256] of Char;
Port:Array[0..32] of Char;
hDMode:THandle;
pDMode:PDevMode;

begin
Printer.GetPrinter(Device,Driver,Port,hDMode);
if hDMode<>0 then
pDMode:=GLobalLock(hDMode);
if pDMode<>nil then
begin
pDMode^.dmPaperSize:=256;
pDMode^.dmPaperLength:=900;
pDMode^.dmPaperWidth:=2900;

pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERSIZE;
pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERLENGTH;
pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERWIDTH;
end;
ResetDC(Printer.Handle,pDMode^);
GLobalUnLock(hDMode);

end;
chenylin 2004-11-01
  • 打赏
  • 举报
回复
好象不行,我已经使用PDeviceMode方式进行了设置纸张大小,而且也是用Printer.Canvas进行打印,但是我那个需要套打的票据太接近底边了;如果将纸张设置准确,走纸控制没有问题,但是最后一行就是打印不出来;如果将纸张设置长一点,最后一行能打印出来,但是走纸又不准确了;实在是烦人...,不知道如何解决,兄弟们帮帮忙。
smiler007 2004-10-31
  • 打赏
  • 举报
回复
在报表设计器中应该可以设定吧???

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧