--- dao/DelphiScanner/LabelPrint.pas 2015/09/04 12:39:33 2705 +++ dao/DelphiScanner/LabelPrint.pas 2016/08/15 12:44:21 3086 @@ -16,12 +16,18 @@ procedure CheckPrintQue(tjektype : string; PrinterNavn : String); + procedure PrintLabel( Stregkode : String); + procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = ''); - procedure PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel); + procedure PrintFuldPakkeLabel( PakkeshopLabel : TPakkeshopLabel); + procedure PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn : String) ; + procedure TestZpl(); + procedure PrintZPL( ZplData : string); + function GetPrinterCount() : Integer; private @@ -45,7 +51,8 @@ Windows, SysUtils, //Format Math, // DegToRad() bruges i PrintPakkeshopLabel - Forms + Forms, + IdHTTP ; @@ -107,6 +114,7 @@ with Printer do begin BeginDoc; + Canvas.Font.Size := Config.FontSizeRute; if (Length(RuteNummer) > 7) then begin @@ -128,6 +136,11 @@ Canvas.TextOut(Config.XPosBoghandler, Config.YPosBoghandler, BoghandlerNavn); EndDoc; end; + + + + Printers.SetPrinter( TPrinter.Create() ).Free();//Work around for KB3177725 + end; @@ -219,9 +232,37 @@ ClosePrinter(hPrinter); end; end; + + + Printers.SetPrinter( TPrinter.Create() ).Free();//Work around for KB3177725 + end; +procedure TLabelPrint.PrintLabel( Stregkode : String); +var + url: String; + response: String; + + httpClient: TIdHTTP; + + + +begin + url := Config.BaseURL + '/BogpakkeKontrol/PrintLabel.php?stregkode=' + Trim(Stregkode); + + httpClient := TIdHTTP.Create(); + httpClient.ReadTimeout := 1000;//max 1 secound + httpClient.ConnectTimeout := 1000; + + response := httpClient.Get(url); + httpClient.Free(); + + + + +end; + procedure TLabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = ''); begin with Printer do @@ -262,12 +303,16 @@ EndDoc; end; + + + Printers.SetPrinter( TPrinter.Create() ).Free();//Work around for KB3177725 + end; // ToDo: PrintPakkeshopLabel() -procedure TLabelPrint.PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel); +procedure TLabelPrint.PrintFuldPakkeLabel( PakkeshopLabel : TPakkeshopLabel); var XForm, XFormOld: TXForm; //Bruges til rotate X-formation Angle: integer; @@ -291,10 +336,19 @@ Canvas.Font.Size := 9; - Canvas.TextOut(110, 240, 'Pakkeshop:'); - Canvas.TextOut(110, 270, PakkeshopLabel.PakkeshopNavn); - Canvas.TextOut(110, 300, PakkeshopLabel.PakkeshopAddr); - Canvas.TextOut(110, 330, PakkeshopLabel.PakkeshopPostnr); + + + // Skriv ikke 'Pakkeshop' overskrift hvis det er en shop2direkte + if ( PakkeshopLabel.PakkeshopNavn <> '' ) then + begin + Canvas.TextOut(110, 240, 'Pakkeshop:'); + Canvas.TextOut(110, 270, PakkeshopLabel.PakkeshopNavn); + Canvas.TextOut(110, 300, PakkeshopLabel.PakkeshopAddr); + Canvas.TextOut(110, 330, PakkeshopLabel.PakkeshopPostnr); + + end; + + Canvas.TextOut(350, 240, 'Afsender:'); Canvas.TextOut(350, 270, PakkeshopLabel.AfsenderNavn); @@ -376,6 +430,8 @@ end; + Printers.SetPrinter( TPrinter.Create() ).Free();//Work around for KB3177725 + end; @@ -389,6 +445,105 @@ Result := p; end; +// Online zpl viewer +// http://labelary.com/viewer.html +procedure TLabelPrint.TestZpl(); +var + zpl: string; +begin + zpl := +'^XA'#13#10 + +'^PON'#13#10 + +'^FWN'#13#10 + + +'^FX Top section with company logo, name and address.'#13#10 + +'^CF0,60'#13#10 + +'^FO50,50^GB100,100,100^FS'#13#10+ +'^FO75,75^FR^GB100,100,100^FS'#13#10+ +'^FO88,88^GB50,50,50^FS'#13#10+ +'^FO220,50^FDInternational Shipping, Inc.^FS'#13#10+ +'^CF0,40'#13#10+ +'^FO220,100^FD1000 Shipping Lane^FS'#13#10+ +'^FO220,135^FDShelbyville TN 38102^FS'#13#10+ +'^FO220,170^FDUnited States (USA)^FS'#13#10+ +'^FO50,250^GB700,1,3^FS'#13#10 + +'^XZ'#13#10 + ; + + PrintZpl(zpl); +end; + +procedure TLabelPrint.PrintZPL( ZplData : string); +var + ADevice, ADeviceName, ADevicePort: array[0..255]of Char; + PrinterHandle: THandle; + DocInfo: TDocInfo1; + dwJob: cardinal; + dwBytesWritten: cardinal; + AUtf8: UTF8string; + ADeviceMode: THandle; + +begin + + + Printer.GetPrinter(ADevice, ADeviceName, ADevicePort, ADeviceMode); + + if not OpenPrinter(ADevice, PrinterHandle, nil) then + begin + Exit; + parentForm.Msg('error on openprinter'); + end; + + //Fill in the structure with info about this "document" + DocInfo.pDocName := PChar('Spooler Document Name'); + DocInfo.pOutputFile := nil; + DocInfo.pDatatype := 'RAW'; + + //Inform the spooler the document is beginning + dwJob := StartDocPrinter(PrinterHandle, 1, @DocInfo); + if dwJob = 0 then + begin + ClosePrinter(PrinterHandle); + PrinterHandle := 0; + Exit; + end; + + //Start a page + if not StartPagePrinter(PrinterHandle) then + begin + EndDocPrinter(PrinterHandle); + ClosePrinter(PrinterHandle); + PrinterHandle := 0; + Exit; + end; + + //your zebra code... + AUtf8 := UTF8string(ZplData); + WritePrinter(PrinterHandle, @AUtf8[1], Length(AUtf8), dwBytesWritten); + + //End the page + if not EndPagePrinter(PrinterHandle) then + begin + EndDocPrinter(PrinterHandle); + ClosePrinter(PrinterHandle); + PrinterHandle := 0; + Exit; + end; + + //Inform the spooler that the document is ending + if not EndDocPrinter(PrinterHandle) then + begin + ClosePrinter(PrinterHandle); + PrinterHandle := 0; + Exit; + end; + + //Tidy up the printer handle + ClosePrinter(PrinterHandle); + PrinterHandle := 0; + +end; + function TLabelPrint.GetPrinterCount() : Integer; begin