在delphi中使用USB打印机

时间:2017-04-03 06:40:12

标签: printing delphi-xe5

我有一个应用程序,它使用端口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);但我没有获得正确的格式。 任何人都可以帮我解决这个问题吗?

0 个答案:

没有答案