Witam, walczę od kilku dnie z drukarką j.w. podłączoną poprzez sieć LAN. Oprogramowanie pisane jest na UBUNTU. W momencie kiedy jest drukarką domyślną w systemie drukowanie z Canvas nie stanowi problemu. Poniżej działający kod.
uses Printers;
procedure TForm1.Button6Click(Sender: TObject);
var
JPG: TJPEGImage;
begin
Printer.Title:='text';
Printer.Orientation:=poLandscape;
Printer.BeginDoc;
Printer.Canvas.Font.Size:=10;
Printer.Canvas.Font.Style:=[fsBold];
Printer.Canvas.TextOut(29,110, 'text');
Printer.Canvas.Line(12,26,100,26);
Printer.EndDoc;
end;
Problem pojawia się kiedy muszę umieścić grafikę. Poniższe rozwiązanie działa jednak nie zapewnia odpowiedniej jakości:
procedure TForm1.Button7Click(Sender: TObject);
var
JPG: TJPEGImage;
logo : integer;
begin
Printer.BeginDoc;
JPG := TJPEGImage.Create;
JPG.LoadFromFile('zd.jpg');
Printer.Canvas.Draw(15, 27, JPG);
Printer.EndDoc;
end;
Zależy mi aby przesłać do drukarki kod ZPL. Przygotowałem taki kod i przetestowałem. Nie wiem zaś jak mogę to zrobić. Jest sporo rozwiązań ale dla delphi i po Windows. Mnie zależy aby to było zrobione na linuksie i na drukarce podłączonej przez LAN.
Poniższa procedura:
procedure PrintString(S: String);
var
Written: Integer;
begin
Printer.Write(S[1], Length(S), Written);
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
Printer.RawMode:=true;
Printer.Orientation:=poLandscape;
Printer.BeginDoc;
PrintString(Memo1.Text);
Printer.EndDoc;
end;
działa ale wysyła tekst w postaci znaków drukowanych na etykiecie a nie rozkazu ZPL. Po zmianie RawMode na false wyskakuje błąd.
Mam nadzieje że powyższe kody pomogą innym i że uda się wypracować kod wysyłania rozkazów do drukarki pod linuksem.
dodanie znaczników <code class="delphi">
- @furious programming