16,748
社区成员
发帖
与我相关
我的任务
分享
procedure TForm1.Button1Click(Sender: TObject);
var
line: integer; //定义一个line变量,用于下面控制打印各行内容
files: system.text; //告诉系统说files是文本文件,是要打印机打印的文件
begin
if printdialog1.execute then //当printdialog1执行后
begin
assignprn(files); //通过assignprn函数将要打印的文件交给打印机
rewrite(files); //让打印机打开文件准备打印
printer.canvas.font.size := 10; //canvas是打印机的画板,用来打印文件的,直接设置字体
for line := 0 to memo1.lines.count - 1 do //以下是循环memo1的每个行
begin
writeln(files, memo1.lines[line]); //打印每行内容 writeln(文件名,文本的某个行);
end;
system.close(files); //打印完了就关闭要打印的文件
end;
end;
procedure WriteRawStringToPrinter(PrinterName: string; S: string);
var
Handle: THandle;
N: DWORD;
DocInfo1: TDocInfo1;
begin
if not OpenPrinter(PChar(PrinterName), Handle, nil) then
begin
ShowMessage('error ' + IntToStr(GetLastError));
Exit;
end;
with DocInfo1 do begin
pDocName := PChar('test doc'); {在打印列表中显示的打印内容}
pOutputFile := nil;
pDataType := 'RAW'; {关键,数据类型必须是RAW,这样打印机通过驱动程序才能识别ZPL语言}
end;
StartDocPrinter(Handle, 1, @DocInfo1);
StartPagePrinter(Handle);
WritePrinter(Handle, PChar(S), Length(S), N);
EndPagePrinter(Handle);
EndDocPrinter(Handle);
ClosePrinter(Handle);
end;