Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zebra Drucker Etiketten Variablen (https://www.delphipraxis.net/197785-zebra-drucker-etiketten-variablen.html)

himitsu 4. Sep 2018 13:01

AW: Zebra Drucker Etiketten Variablen
 
Zitat:

Zitat von HolgerX (Beitrag 1412421)
Aber ich glaube mit der ZebraDesigner ist es nur durch einen Trick möglich an das generierte ZPL-Script zu kommen.

Zitat:

Zitat von himitsu (Beitrag 1412417)
Zitat:

Zitat von Graw (Beitrag 1412404)
Ich habe mit dem ZebraDesigner ein Etikett erstellt und würde dieses nun auch gerne öffnen und Variablen mit Daten ersetzen.
Leider ist dies mit der erstellten Label Datei anscheinend nicht möglich.

Mit dem ZebraDesigner erstellt?

Da vielleicht besser den ZebraDesigner Pro oder ZebraDesigner XML verwenden.
https://www.zebra.com/de/de/products...-designer.html

Laut der Beschreibung auf der Webseite klingt das von der PRO (oder XML) hierfür geeigneter.
Zitat:

Zitat von ZebraDesigner
... bietet grundlegende Designfunktionen.

Zitat:

Zitat von ZebraDesigner Pro
... Erstellen komplexer Etiketten mit festen oder variablen Daten.



PS: Umleiten/Abfangen von Druckausgaben.
https://www.colorpilot.com/emfprinterpilot.html

HolgerX 4. Sep 2018 13:13

AW: Zebra Drucker Etiketten Variablen
 
Hmm..

alternativ zum ZebraDesigner (noch nicht näher angeschaut)

https://sourceforge.net/projects/vzpl/

Oder bei Handerstellung der ZPLs zum Prüfen:

http://labelary.com/viewer.html

Das ganze als Java..

https://github.com/teynon/ZPL-Label-Designer
Mit Demo:
http://teynon.github.io/ZPL-Label-Designer/index.html

OK, es geht auch ohne Printer-Port:
https://stackoverflow.com/questions/...85389#16685389

HolgerX 4. Sep 2018 13:30

AW: Zebra Drucker Etiketten Variablen
 
Hmm..

Habe hier noch eine kleine Beschreibung gefunden (in EN und für andere Platzhalter)

https://help.benchling.com/general/c...ample-tracking

Aber alleine an den ScreenShots sollte der Weg ersichtlich sein..

Graw 5. Sep 2018 12:28

AW: Zebra Drucker Etiketten Variablen
 
Schon mal vielen Dank für die vielen Antworten.
Ich werde morgen wieder Zeit haben daran zu arbeiten.
Mal schauen ob und wie ich ans Ziel komme.
Ich werde dann berichten.

himitsu 5. Sep 2018 13:02

AW: Zebra Drucker Etiketten Variablen
 
Zitat:

Zitat von HolgerX (Beitrag 1412423)

als JavaScript


Im FF funktioniert der Generate-Button, aber egal, da man keine Elemente hinzufügen kann
und im IE kann ich Welche hinzufügen, aber das Generieren geht nicht. :stupid:

Aber das Projekt ist eh tot.

stifflersmom 5. Sep 2018 14:15

AW: Zebra Drucker Etiketten Variablen
 
Moin,

wir erstellen die vorlage einmalig im Zebradesigner und drucken das Etikett dann in eine Datei bzw. leiten den Port des Zebradruckers in eine Datei um.
Dann bekommst Du z.B. so was hier:
Code:
^XA~TA000~JSN^LT0^MNW^MTD^PON^PMN^LH0,0^JMA^PR5,5~SD15^JUS^LRN^CI0^XZ
^XA
^MMT
^PW799
^LL1199
^LS0
^FT772,1130^A0I,39,38^FH\^FDFirmenname^FS
^FT520,1127^A0I,28,28^FH\^FDGmbH & Co KG^FS
^FT772,1069^A0I,28,28^FH\^FDAuftrag:^FS
^FT646,1069^A0I,28,28^FH\^FD###VAR1###^FS
^FO19,1029^GB753,0,15^FS

^FT772,991^A0I,23,24^FH\^FDArtikel^FS
^FT653,991^A0I,23,24^FH\^FDOE^FS
^FT546,991^A0I,23,24^FH\^FDBeschreibung^FS
^FT240,991^A0I,23,24^FH\^FDBest./Gel.^FS
^FT120,991^A0I,23,24^FH\^FDPREIS^FS

^FT653,954^A0I,23,24^FH\^FD###VAR2###^FS
^FT772,954^A0I,23,24^FH\^FD###VAR3###^FS



^FT546,954^A0I,23,16^FH\^FDT222222222222222222222222222222^FS
^FT100,954^A0I,23,24^FH\^FD###VAR4###^FS
^FT240,954^A0I,23,24^FH\^FD###VAR5###^FS

^BY2,3,77^FT335,1074^BCI,,Y,N
^FD>:AUFTRAGLS^FS
^FT776,613^A0I,28,28^FH\^FD###VAR6###^FS
^PQ1,0,1,Y^XZ
Diese Datei bzw. diesen String dängelst Du dann mit Deinen Werten um schickst das per Indy direkt an den Drucker.
Das klappt wunderbar und ist pfeilschnell, weil sehr schlank :-)

Gruß

Graw 7. Sep 2018 06:46

AW: Zebra Drucker Etiketten Variablen
 
Zitat:

Diese Datei bzw. diesen String dängelst Du dann mit Deinen Werten um schickst das per Indy direkt an den Drucker.
Das klappt wunderbar und ist pfeilschnell, weil sehr schlank
Klappt das auch mit einem über USB angeschlossenen Zebra Drucker?

mjustin 7. Sep 2018 07:01

AW: Zebra Drucker Etiketten Variablen
 
Zitat:

Zitat von Graw (Beitrag 1412662)
Zitat:

Diese Datei bzw. diesen String dängelst Du dann mit Deinen Werten um schickst das per Indy direkt an den Drucker.
Das klappt wunderbar und ist pfeilschnell, weil sehr schlank
Klappt das auch mit einem über USB angeschlossenen Zebra Drucker?

Im Windows Netzwerk haben wir Zebra Drucker auf die wir reine ASCII (ZPL) Daten senden, dazu verwenden wir den Windows Sharenamen in der Form \\printserver\druckername

Hier wird beschrieben wie man einen lokalen USB Drucker einen Windows Share Namen zuweist:

http://www.nrgsoft.com/support/activ...?questionid=11

Dann die Druckdaten per Stringlist.SaveToFile('\\mypc\mylocalprinter') ausgeben.

(Disclaimer: mit lokalen Druckern habe ich es nicht selber getestet)

HolgerX 7. Sep 2018 09:16

AW: Zebra Drucker Etiketten Variablen
 
Hmm..

Wieso der Umweg über LPT....

Den Drucker ganz normal unter Windows installieren!

Und dann reicht folgendes, um jedes Script (kann ZPL, EPL oder anderes RAW-Script sein!) direkt programmtechnisch an den Drucker zu schicken:

Delphi-Quellcode:
uses
  WinSpool, Printers;

function SendRAWData(RAWData: AnsiString; Port : Ansistring):boolean;
var
  dwCount       : DWORD;
  hPrinter      : THandle;
  DocInfo       : TDocInfo1A;
  dwJOB         : DWORD;
  dwBytesWritten : DWORD;
begin
  result:=false;
  dwCount := Length(RAWData);
  if OpenPrinterA(PAnsiChar(Port), hPrinter, Nil) then begin
    try
      DocInfo.pDocName := 'RAWPrint';
      DocInfo.pOutputFile := Nil;
      DocInfo.pDatatype := 'RAW';
      dwJob := StartDocPrinterA(hPrinter, 1, @docInfo);
      if dwJob <> 0 then
        try
          if StartPagePrinter(hPrinter) then
            try
              if WritePrinter(hPrinter, PAnsichar(RAWData), dwCount, dwBytesWritten) then
                if dwBytesWritten <> dwCount then
                  raise Exception.Create('Übertragungsprobleme mit '+Port+'!')
                else result:=true;
            finally
              EndPagePrinter(hPrinter)
            end
        finally
          EndDocPrinter(hPrinter);
        end
    finally
      ClosePrinter(hPrinter)
    end;
  end else raise Exception.Create('Drucker '+Port+' nicht zur Verfügung!');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Port : string;
  Data : string;
begin
  if PrintDialog1.Execute then begin
    Port := Printer.Printers[Printer.PrinterIndex];
    Data := 'DIES IST DAS ASCII-SCRIPT';
    SendRAWData(Data,Port);
  end;
end;
(Ist nicht optimiert und verwendet nur ASCII (ANSI), was aber OK ist, da die meisten Scriptfähigen Drucker nicht Unicode per Script können!)

Es ist hierbei egal, ob der Drucker per USB/LPT/Netzwerk oder wie auch immer angeschlossen ist.

(Den Printdialog habe nur als Beispiel verwendet, der Drucker kann auch schon vorher selektiert/gespeichert worden sein.)

Edit:
Kann sogar auf normalen z.B. Laserdrucker verwendet werden, um direkt Text zu drucken.

mjustin 7. Sep 2018 20:17

AW: Zebra Drucker Etiketten Variablen
 
Zitat:

Zitat von HolgerX (Beitrag 1412678)

Wieso der Umweg über LPT....

Den Drucker ganz normal unter Windows installieren!

LPT habe ich hier noch nicht bei den Antworten gesehen (sollte aber im Prinzip so wie ein Share funktionieren). Mit dem Umweg über den Druckertreiber haben wir in einem Windows 2008 Server Umfeld (mit Delphi 2009 Enterprise) Anfang letzten Jahres keine guten Erfahrungen gemacht, was laut Informationen hier im Forum der Printers Unit geschuldet ist. Effekt war, dass nach einigen Ausdrucken die Printerqueue fehlerhafte Jobs enthielt, man dann immer die Queue löschen musste und jedesmal alle Ausdrucke verloren gingen. Der Ausdruck per Stringlist.SaveToFile('\\printserver\printername') mit tausenden Ausdrucken pro Woche deutlich stabiler. Nach Recherchen soll die Printers Unit in Delphi seit Delphi 2009 auch keine wesentlichen Verbesserungen erhalten haben. Wir wollten den Druckertreiber eigentlich nur dazwischenschalten um den Ausdruck mit kleinerer Schriftart auszugeben, und so einige Bäume einzusparen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz