200分,紧急求助!!!自定义纸张 (200分)

  • 主题发起人 主题发起人 dfw_cgl
  • 开始时间 开始时间
D

dfw_cgl

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠:我想通过送控制码方式设置打印机的纸张大小,然后打印一个文本文件;也可以将控制码写入文件,然后打印该文本文件,但我发现控制码不起作用,打印出来的是一些怪字符;恳求各位大侠能给我指点一二,万分感激!
说明:平台:Win 2000,打印机:网络。
我的代码:
function PrintText(sText: PChar):integer;
stdcall;
var
APrinterF : TextFile;
AStr: string;
begin
AssignPrn(APrinterF);
Rewrite(APrinterF);
AStr := Chr(27)+Chr(64)+Chr(27)+Chr(50)+Chr(27)+Chr(67)+Chr(16) + sText + Chr(27)+Chr(12);
Writeln(APrinterF, AStr);
CloseFile(APrinterF);
result:=1;
end;

因为用尺寸设置自定义纸张总会有误差,所以这种办法肯定不能用。
分值不够再加。
 
你可以先用Tprinter类的GetPrint方法得到一个HANDLE,然后用Gloublelock函数锁定HANDLE然后设定纸张的长和宽就行了。
 
例子:
var
F:TEXTFILE;
begin
ASSIGNFILE(F,'LPT1');
REWRITE(F);
WRITELN(F,chr(27) '@');
//initial the printer
WRITELN(F,'TEST1 FIRST LINE');你的内容
WRITELN(F,chr(12));
// move the paper to a new page
CLOSEFILE(F);
具体的控制码参看打印机说明书。
 
wn569的方法肯定不行,因为带孔打印纸的连续走纸主要根据孔定的,而不同厂商的纸张情况不一定相同,孔间距不同,走纸肯定不准,套打也就肯定不行。
wwwwb的方法其实在发出问题前我已经试过,不知道为什么有些控制码有效,而有些控制码失效,而且,我在文本文件中加入控制码,里面有汉字,但读出来打印之后,汉字全变成乱码,不知为什么?
我在PowerBuilder中可以轻松实现上述问题。
 
后退
顶部