Jump to content

zebra Barkod Basım işlemi


mehmet ali iyikülah

Recommended Posts

Merhabalar,

zebra yazıcılardan barkod çıkarma işlemi üzerinde çalışıyorum. Fast report üzerinden tasarımı yaptım. Client ekranında etiket bas butonuna bastığımda yazıcıdan çıktı almak istiyorum, serverdan yaptığım zaman hiç bir problem olmadan alıyorum çünkü yazıcı yolu belirledim. fakat Client ile ilgili bir yol bulamadım. (yazıcı paylaşımı yapmak istemiyorum.) . Bununla ilgili önerebileceğiniz bir metot var mı acaba .?

Link to comment
Share on other sites

Merhaba

Bu işin en kolay yolu yazıcı için bir servis yazmak

Client yazdırmak istediğinde veritabanına bir kayıt ekler. Yazıcı servisi de belirli aralıklarda tabloyu kontol eder ve yazdırma işlemini gerçekleştirir

 

Link to comment
Share on other sites

  • 1 year later...
  • 3 months later...

websocket ile yapabilirsiniz .

local makinada örnek olarak 8021 portu açık olacak siz javascript ile bu porta gideceksiniz. base64 olarak istediğiniz veriyi yollayacaksınız websocket de ki servis ile de bu veriyi açıp yazdıracaksınız. 

 

2.ci yöntem aynı local ağ da çalışıyorsa bir klasöre txt olarak kaydedebilir bunu barkod yazıcıya cmd ile yollayabilirsiniz bunu yapabilmeniz için barkod cihazının paylaşıma açık olması gerekli

Link to comment
Share on other sites

2. yöntemi delphi de uzun yıllardır. copy ../etiket.prn //bilgisayaradi/yazıcıpaylasimadi olarak kullanıyoruz. fakat local ağda denedik stabil bir şekilde çalışmadı ara ara kesilmeler , problemler yaşadık. restapi ile delphi uygulaması yazdık onunla haberleştirdik, sorunu böyle çözdük. Dolayısıyla ilk sözlediğiniz yöntemi biraz daha açıklar mısınız?

Link to comment
Share on other sites

Basit ama etkili bir yazdırma sunucusu.

Mantık olarak unigui üzerinden lokal ip yi kontrol ettiriyorum daha sonra yazıcı ismini alıyorum daha sonra rest sunucusuna fastreportdan aldığım pdf verisine gönderiyorum.

unit PrinterServerMethodsUnit;

interface

uses
  System.SysUtils, System.Classes, Datasnap.DSServer, Datasnap.DSAuth, Printers,
  IdBaseComponent, IdComponent, IdIPWatch, WinSpool, ShellAPI, gtPDFDoc,
  gtPDFPrinter, Types;

type
{$METHODINFO ON}
  PrinterServerMethods = class(TComponent)
  private
    { Private declarations }
    function GetLocalIp: string;
  public
    { Public declarations }
    function Connect(ip: string): Boolean;
    function GetPrinterName: string;
    function Print(data: TStream): Boolean;
  end;
{$METHODINFO OFF}

implementation

uses
  System.StrUtils;

function PrinterServerMethods.Connect(ip: string): Boolean;
begin
  if ip = GetLocalIp then
    Result := True
  else
    Result := False;
end;

function PrinterServerMethods.GetLocalIp: string;
var
  IPW: TIdIPWatch;
begin
  IPW := TIdIPWatch.Create(nil);
  try
    if IPW.LocalIP <> '' then
      Result := IPW.LocalIP;
  finally
    IPW.Free;
  end;
end;

function PrinterServerMethods.GetPrinterName: string;
begin
  if (Printer.Printers.Count > 0) then
  begin
    Printer.PrinterIndex := -1;
    Result := Printer.Printers[Printer.PrinterIndex];
  end
  else
  begin
    Result := '';
  end;
end;

function PrinterServerMethods.Print(data: TStream): Boolean;
var
  pdf: TgtPDFDocument;
  pdf_printer: TgtPDFPrinter;
begin
  try
    try
      pdf := TgtPDFDocument.Create(Self);
      pdf_printer := TgtPDFPrinter.Create(Self);
      pdf.LoadFromStream(data);
      pdf_printer.PDFDocument := pdf;
      pdf_printer.SelectPrinterByName(GetPrinterName);
      pdf_printer.ShowSetupDialog := False;
      pdf_printer.PrintDoc;
      Result := True;
    finally
      pdf.Free;
      pdf_printer.Free;
    end;
  except
    on e: exception do
    begin
      Result := False;
    end;
  end;
end;

end.

 

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...