[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Apr 2008
    Beiträge
    83

    Thumbs up ZPL auf Zebra ausgeben

    Moin,

    aus einem Webservice bekomme ich ein XML mit einem ZPL-Datenstrom in einem XML-Tag. Diesen würde ich gerne auf einem Zebra-Drucker ausgeben. Mir fällt aber nicht ein wie.
    Mein Hauptproblem ist, dass der ZPL-Datenstrom etwa 100.000 Zeichen umfasst.

    In diesem Post wird z.B. davon gesprochen mit CPY zu arbeiten.
    http://newsolutions.de/forum-systemi...67-PDF-drucken
    Klingt so als wenn das auch mit Zebra funktionieren sollte. Wäre das möglich und wie genau müsste ich das machen?

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    18.475
    Extrahiere den ZPL-Code in eine IFS-Datei.
    Dies kannst du mit SQL machen.
    Die IFS-Datei sollte dann die Codepage 1252 haben, da es sonst zu Verfälschungen der ZPL-Codes kommen kann.
    Per CRTPF erstellst du eine Binärdatei:
    CRTPF FILE(*CURLIB/MYZPL) RCDLEN(256)
    Mittels CPYTOSMTF kopierst du die IFS-Datei nun Binär in die PF.

    Nun machst du eine Dateiüberschreibung:
    OVRPRTF FILE(QPRINT) DEVTYPE(*USERASCII)

    Mittels
    CPYF kopierst du die PF nun auf die Datei QPRINT.

    Alternativ liest du die XML in ILERPG einfach ein, machst den obigen OVRPRTF und schreibst die Daten in QPRINT.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Apr 2008
    Beiträge
    83
    Hallo Fuerchau,

    ich vermute du meinst CPYFRMSTMF? Aber dann werden die Daten doch abgeschnitten? Weil das ist mein Problem mit den 100.000 Zeichen.
    Oder darf ich den ZPL-Datenstrom beliebig einen Zeilenumbruch hinzufügen? Dann ist das natürlich kein Problem mehr.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    18.475
    Der kann beliebig umgebrochen werden, da durche den OVR mit USRASCII keine CRLF eingefügt werden.
    Der Drucker sollte dann als Remote-Outq mit Hosttransform *CONT132 generiert sein.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Apr 2008
    Beiträge
    83
    Okay dann ist das Problem natürlich weg. Dann kann ich auch die Hinweise verwenden, die ich schon gefunden hatte. Von Zebra gibt es da ja auch ein Dokument: https://www.zebra.com/content/dam/ze...f-guide-en.pdf

    Allerdings funktioniert das noch nicht richtig. Ich habe mir zum Testen jetzt erstmal eine Datei im IFS angelegt und bei 200 Zeichen immer einen Umbruch gemacht. Die Datei hat die CCSID 1252.

    Der Drucker ist angelegt mit:
    CRTOUTQ OUTQ(xxx) RMTSYS(*INTNETADR) RMTPRTQ('portLF1') AUTOSTRWTR(1) CNNTYPE(*IP) DESTTYPE(*OTHER) MFRTYPMDL(*WSCSTCONT132) WSCST(QSYS/QWPDEFAULT) INTNETADR('xxx') DESTOPT(*NONE) SEPPAGE(*NO) TEXT('Test')

    Dann die Daten kopieren:
    CRTPF FILE(QTEMP/MYZPL) RCDLEN(200)
    CPYFRMSTMF FROMSTMF('/test.txt') TOMBR('/QSYS.LIB/QTEMP.LIB/MYZPL.FILE/MYZPL.MBR') MBROPT(*REPLACE)

    Drucken über:
    CPYF FROMFILE(QTEMP/MYZPL) TOFILE(QPRINT)

    Ich habe den OVR auf zwei Arten probiert:
    OVRPRTF FILE(QPRINT) DEVTYPE(*USERASCII) OUTQ(xxx) SAVE(*YES)
    Es passiert nichts. Der Spool ist da, aber der Drucker tut nichts.

    OVRPRTF FILE(QPRINT) FORMFEED(*CONT) OUTQ(xxx) SAVE(*YES)
    Das ist die Variante, die im Dokument von Zebra beschrieben ist.
    Es wird ein Etikett gedruckt. Ein paar Texte, Linien und Barcodes passen und anderes wieder gar nicht.
    Das liegt dann vermutlich daran, dass die Umbrüche das jetzt kaputt machen.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    18.475
    1. Du darfst keine Umbrüche (CRLF) erzeugen!
    2. ZPL hat leider einen Nachteil:
    Von Zebra gibt es Drucker in unterschiedlicher DPI (200, 300). Bei der Angabe von Koordinaten zum Drucken müssen diese in der passenden DPI angegeben werden.
    Ein 200-DPI-Etikett wird auf einem 300-DPI-Drucker zu klein und umgekehr halt zu groß gedruckt.

    Beim CPYFRMSTMF ist RCDDLM(*FIXED) zu verwenden, für Codepage auf jeden Fall *HEX.
    Was ggf. auch noch gehen könnte:
    OVRDBF FROMFILE(STDOUT) TOFILE(QPRINT)
    QSH CMD('type myzplfile')
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Apr 2008
    Beiträge
    83
    Zitat Zitat von Fuerchau Beitrag anzeigen
    1. Du darfst keine Umbrüche (CRLF) erzeugen!
    Ja das hatte ich schon erwartet.

    Zitat Zitat von Fuerchau Beitrag anzeigen
    2. ZPL hat leider einen Nachteil:
    Von Zebra gibt es Drucker in unterschiedlicher DPI (200, 300). Bei der Angabe von Koordinaten zum Drucken müssen diese in der passenden DPI angegeben werden.
    Ein 200-DPI-Etikett wird auf einem 300-DPI-Drucker zu klein und umgekehr halt zu groß gedruckt.
    Ich denke nicht, dass es daran liegt. Über http://labelary.com sieht es wie ein 200 dpi Etikett aus und der Drucker ist auch 200 dpi.
    Der Fehler liegt an den Umbrüchen, wenn ich es ohne *USERASCII mache.
    Bzw. mit *USERASCII passiert halt gar nichts.

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Beim CPYFRMSTMF ist RCDDLM(*FIXED) zu verwenden, für Codepage auf jeden Fall *HEX.
    Das verstehe ich nicht. CPYFRMSTMF hat kein RCDDLM. Nur CPYFRMIMPF. Und das hat kein RCDDLM(*FIXED). Und *HEX ist dort auch nirgends erlaubt.

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Was ggf. auch noch gehen könnte:
    OVRDBF FROMFILE(STDOUT) TOFILE(QPRINT)
    QSH CMD('type myzplfile')
    Das funktioniert nicht. In dem Spool steht dann nur "test.txt ist test.txt."

  8. #8
    Registriert seit
    Apr 2008
    Beiträge
    83
    Zitat Zitat von Ottersberg Beitrag anzeigen
    Das verstehe ich nicht. CPYFRMSTMF hat kein RCDDLM. Nur CPYFRMIMPF. Und das hat kein RCDDLM(*FIXED).
    Okay ich denke du meintest ENDLINFMT(*FIXED).

    Einen anderen Fehler habe ich heute Morgen noch festgestellt. Der CPYF kopiert maximal 132 Zeichen. Mit 200 war ich also zu groß. Ich habe meine Testdatei auf 100 Zeichen verkleinert.

    Neuer Ablauf:
    CRTPF FILE(QTEMP/MYZPL) RCDLEN(100)
    CPYFRMSTMF FROMSTMF('/test.txt') TOMBR('/QSYS.LIB/QTEMP.LIB/MYZPL.FILE/MYZPL.MBR') MBROPT(*REPLACE) ENDLINFMT(*FIXED) TABEXPN(*NO)
    OVRPRTF FILE(QPRINT) FORMFEED(*CONT) OUTQ(xxx) SAVE(*YES)
    CPYF FROMFILE(QTEMP/MYZPL) TOFILE(QPRINT)

    Dann bekomme ich ein lesbares Etikett.

    Mit
    OVRPRTF FILE(QPRINT) DEVTYPE(*USERASCII) OUTQ(xxx) SAVE(*YES)
    tut sich aber weiterhin nichts.

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    18.475
    Wenn du ein lesbares Etikett bekommst, ist ja gut.
    D.h., dass der CPYFRMSTMF eine Codewandlung durchführt, die allerdings wohl unschädlich erscheint.
    Der Druckertreiber macht dann die Umwandlung wieder rückgängig.

    Was die Breite angeht, so kann man die ggf. im OVRPRTF mit anpassen (bis 378).
    Ich kann i.M. nicht sagen, was die QPPRINT (alternativ geht auch QSYSPRT) als Druckbreite eingestellt hat.

    Was die Verwirrung mit dem *FIXED angeht, so hatte ich gerade keinen AS/400-Zugriff (ähm IBM i).

    Freut mich aber, dass es klappt.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #10
    Registriert seit
    Apr 2008
    Beiträge
    83
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Wenn du ein lesbares Etikett bekommst, ist ja gut.
    Ja. Ich habe da jetzt auch nicht weiter mit *USERASCII getestet.
    Ich habe dann noch mit SQL und xmltable die automatische Verarbeitung der XML-Daten gemacht um das zu automatisieren.

    Danke für die Hilfe.

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    18.475
    USERASCII kann nur funktionieren, wenn der CPYTOSTMF mit CVTDTA(*NONE) erfolgt und somit ASCII-Daten in der PF stehen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

Ähnliche Themen

  1. Erfahrung mit Interform + zebra +RFID?
    Von K_Tippi im Forum NEWSboard Drucker
    Antworten: 5
    Letzter Beitrag: 01-08-19, 13:02
  2. Drucken PDF ais IFS auf Zebra
    Von Schmidtke_BOC im Forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 08-08-18, 18:57
  3. Feldnamen mit Spalteninformation ausgeben
    Von sonicreducer im Forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 10-04-17, 13:12
  4. ZEBRA GK420t
    Von AKS1 im Forum NEWSboard Drucker
    Antworten: 2
    Letzter Beitrag: 06-02-17, 13:46
  5. Etikettdruck auf Zebra QLN420 Mobile Drucker
    Von Peterd im Forum NEWSboard Drucker
    Antworten: 3
    Letzter Beitrag: 14-01-16, 13:44

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •