我有一个应用程序,它使用端口LPT1将文档打印到Dot Matrix打印机。 现在我们计划修改该代码以使用所有USB打印机,并且它应该能够打印到PDF文档。 我们使用的代码如下:
procedure TFrmPrintDialog.SpdBtnPrintClick(Sender: TObject);
var
i, n: integer;
F: TextFile;
CH, CH1, CH2, str0, str1: string;
begin
ListPrinterInfo;
ShowPrinterInfo;
AssignFile(F, namaprinter); //'pdfcmon'
//AssignPrn(F);
Rewrite(F);
n := FrmPreview.RichEdit1.Lines.Count;
for i := 0 to n - 1 do
begin
str1 := FrmPreview.RichEdit2.Lines.Strings[i];
if i = 0 then
CH := chr(15) + chr(27) + 'M'
else
CH := '';
str0 := CH + FrmPreview.RichEdit1.Lines.Strings[i];
if str1 = '*FF' then
writeln(F, chr(12)); // ganti halaman
// bold kode huruf ke 3
if copy(str1, 3, 1) = 'B' then
begin
CH1 := chr(27) + chr(71);
CH2 := chr(27) + chr(72);
end
else
begin
CH1 := '';
CH2 := '';
end;
str0 := CH1 + str0 + CH2;
// Underline kode huruf ke 4
if copy(str1, 4, 1) = 'U' then
begin
CH1 := chr(27) + chr(45) + '1';
CH2 := chr(27) + chr(45) + '0';
end
else
begin
CH1 := '';
CH2 := '';
end;
str0 := CH1 + str0 + CH2;
// Italic kode huruf ke 5
if copy(str1, 5, 1) = 'I' then
begin
CH1 := chr(27) + chr(52) + '4';
CH2 := chr(27) + chr(53) + '5';
end
else
begin
CH1 := '';
CH2 := '';
end;
str0 := CH1 + str0 + CH2;
// Besar kode huruf ke 6
if copy(str1, 6, 1) = 'G' then
begin
CH1 := chr(27) + chr(87) + '1';
CH2 := chr(27) + chr(87) + '0';
end
else
begin
CH1 := '';
CH2 := '';
end;
str0 := CH1 + str0 + CH2;
writeln(F, str0);
end;
writeln(F, chr(27) + '@');
CloseFile(F);
FrmPrintDialog.Close;
end;
我尝试将AssignFile(F,namaprinter);
替换为AssignPrn(F);
但我没有获得正确的格式。
任何人都可以帮我解决这个问题吗?