How to rotate a label in a zpl 90 degrees (php)?

Viewed 49

I have a label ready in ZPL format. I would like to rotate it 90 degrees clockwise (every element of it). How can I do it in PHP, is there any library for it? I would not like to use any API.

Zpl code looks like this:

CT~~CD,~CC^~CT~
^XA~TA000~JSN^LT0^MNW^MTD^PON^PMN^LH0,0^JMA^PR5,5~SD15^JUS^LRN^CI28^XZ
^XA
^MMT
^PW812
^LL1218
^LS0
^FO768,960^GFA,00512,00512,00008,:Z64:
eJxjYCAN1P////8BkHYAYoVhTMP8OdwBAAKyEzk=:CDC6
^FO768,800^GFA,00256,00256,00008,:Z64:
eJyz/////wcGBgYFIBYYAbQ91L8wAAA49Q3J:B197
^FO0,0^GFA,123136,123136,00104,:Z64:
eJzsz7ENACAIAEEKBnMzFzfBhNLKhu5+gctHSJIkve2a7rSzxk+Sw+FwOBwOh8PhcDgcDofD4XA4HA6Hw+FwOBwOh8PhcDgcDofD4XA4HA6Hw+FwOBwOh8PhcDgcDofD4XA4HA6Hw+FwOBwOh8PhcDgcDofD4XA4HA6Hw+FwOBwOh8PhcDgcDofD4XA4nE/nAgAA///szYEAAAAAgKD9qRcpgTwej8fj8Xg8Ho/H4/F4PB6Px+PxeDwej8fj8Xg8Ho/H4/F4PB6Px+PxeDwej8fj8Xg8Ho/H4/F4PB6Px+PxeDwej8fj8Xg8Ho/H4/F4PB6Px+PxeDwej8fj8Xg8Ho/H4/F4PB6Px+PxeDwej8fj8dQAAAD//+zNgQAAAACAoP2pFymBPB6Px+PxeDwej8fj8Xg8Ho/H4/F4PB6Px+PxeDwej8fj8Xg8Ho/H4/F4PB6Px+PxeDwej8fj8Xg8Ho/H4/F4PB6Px+PxeDwej8fj8Xg8Ho/H4/F4PB6Px+PxeDwej8fj8Xg8Ho/H4/F4PB6Px+Px1AAAAP//7c8BCQAACASx6BYXNMWD4K7AOA6Hw+FwOBwOh8PhcDgcDofD4XA4HA6Hw+FwOBwOh8PhcDgcDofD4XA4HA6Hw+FwOBwOh8PhcDgcDofD4XA4HA6Hw+FwOBwOh8PhcG46Nek6fiJJkvSnBZR78tA=:280D
^FO288,32^GFA,04480,04480,00028,:Z64:
eJzt1jtu3DAQBmAyBEIXgZkyRWD6IIGYo+QIPgBhqXO5V2KQwuVegZ3LFeDCDCJoTFn7EG3OD3irGNAAavRBWnK0nBkh1ljjv4hvwC6AfQF2CUwj64AF3lQ8z2QPLPEmzrUfwL4DuwKGkv0Z2CdgUsiRVxd5o/rtX/lSzCubfGkma7bLF/NzJt9vQ910/rLU1U0NQjLLnNbPLTP/WJcfZcIGbgt5MdHwf7Qby9tXbutToK/gOt5aYDll0zlraymg+Qy2c1rN8i3yaPF9Nh6sZ82rt6YOJiuWP5H+Q9HL5KIaTXpt99Rna5OhTcWSF4kGS9v32e/k5d902+jNaS0UZwuDl//6ppGndVoa9+a9eoy2WezBER1NP0XrFqYpvew9W0tPwbrhbV5e7CEYS6XRwe4n25TW7e0uGE3b0uJsgw5GvLZ+XqfQ0Qq9Ky0tTO1q7/S5OtuL0uR+nT5X5+ZK7cLSxqOlW6e3of4cDXmTxWk8mqDB0R1jbW9IldYdzPV6LFvC6RzltnUtinBBsAHOLTjvCtQQEwxbe1BdAvUsZ5rtAKh+GlB3beAT4/bP1mJqmtwmfgoBWxXbIKbQbDWXQrAvRX0T9VvUp1HvRzODB3bmjAJnImBwBgu8obkOzYOGJ5hqNLeieRfNyWusscYHimeBLBik:BDC1
^FO218,21^GB0,163,1^FS
^FO502,21^GB0,163,2^FS
^FO305,19^GB0,164,1^FS
^FO622,19^GB0,163,1^FS
^FO17,545^GB788,0,1^FS
^FO18,1024^GB487,0,1^FS
^FO17,932^GB487,0,1^FS
^FO17,740^GB488,0,1^FS
^FO504,545^GB0,615,1^FS
^FO17,182^GB788,0,1^FS
^FT627,40^A0N,20,19^FH\^FDStacja doreczajaca:^FS
^FT22,1045^A0N,20,21^FH\^FDUwagi:^FS
^FT21,953^A0N,20,21^FH\^FDPlatnik:^FS
^FT506,909^A0N,25,24^FH\^FDPOBRANIE:^FS
^FT505,992^A0N,23,24^FH\^FDNADANIE W PACZKOMACIE^FS
^FT506,867^A0N,25,24^FH\^FDUBEZPIECZENIE:^FS
^FT505,1111^A0N,23,24^FH\^FDMPK:^FS
^FT506,827^A0N,28,28^FH\^FDWERYFIKACJA WAGI^FS
^FT506,949^A0N,23,24^FH\^FDData wydruku:^FS
^FT506,782^A0N,23,24^FH\^FDWaga gabarytowa:^FS
^FT505,741^A0N,23,24^FH\^FDWaga rzeczywista:^FS
^FT506,699^A0N,23,24^FH\^FDSzerokosc:^FS
^FT506,655^A0N,23,24^FH\^FDDlugosc:^FS
^FT505,616^A0N,23,24^FH\^FDWysokosc:^FS
^FT505,574^A0N,23,24^FH\^FDTyp paczki:^FS
^FT21,761^A0N,20,21^FH\^FDNadawca:^FS
^FT21,564^A0N,20,21^FH\^FDOdbiorca:^FS
^FT170,535^A0N,39,40^FH\^FD523000014231764061974390^FS
^FT22,529^A0N,20,21^FH\^FDNumer paczki:^FS
^FT223,97^A0N,17,14^FH\^FDMicrorejon:^FS
^FT510,45^A0N,20,19^FH\^FDSortownia:^FS
^FT23,44^A0N,17,16^FH\^FDRejon kurierski:^FS
^FT503,156^A0N,68,24^FB121,1,0,C^FH\^FDSC2^FS
^FT736,535^A0N,39,40^FB76,1,0,C^FH\^FD1/1^FS
^FT215,157^A0N,45,19^FB99,1,0,C^FH\^FD2^FS
^FT216,72^A0N,51,16^FB104,1,0,C^FH\^FD2022-08-05^FS
^FT0,156^A0N,119,62^FB301,1,0,C^FH\^FDM2^FS
^FT0,158^A0N,154,67^FB149,1,0,C^FH\^FDA^FS
^FO505,1087^GB301,0,1^FS
^FO505,1046^GB301,0,1^FS
^FO504,1003^GB301,0,1^FS
^FO505,961^GB300,0,1^FS
^FO505,920^GB300,0,1^FS
^FO505,877^GB301,0,1^FS
^FO505,836^GB301,0,1^FS
^FO505,794^GB300,0,2^FS
^FO505,753^GB300,0,1^FS
^FO505,711^GB301,0,1^FS
^FO505,667^GB301,0,1^FS
^FO505,626^GB301,0,1^FS
^FO505,585^GB300,0,1^FS
^BY4,3,216^FT70,415^BCN,,Y,N
^FD>;523000014231764061974390^FS
^FT753,463^A0N,14,14^FH\^FDAPI_ZPL^FS
^FT22,1071^A0N,23,24^FH\^FDd4rrrrrr@gmail.com
^FS
^FT22,1099^A0N,23,24^FH\^FD^FS
^FT22,1127^A0N,23,24^FH\^FD^FS
^FT22,1155^A0N,23,24^FH\^FD^FS
^FT23,982^A0N,23,24^FH\^FDFM POLSKA - SIEDZIBA FIRMY^FS
^FT23,1010^A0N,23,24^FH\^FD^FS
^FT23,736^A0N,23,24^FH\^FD^FS
^FT23,710^A0N,23,24^FH\^FDDariusz Nowak^FS
^FT24,686^A0N,23,24^FH\^FD515055525^FS
^FT149,653^A0N,28,31^FH\^FDKraków^FS
^FT24,658^A0N,28,31^FH\^FD31-764^FS
^FT24,619^A0N,23,24^FH\^FDLubor 333^FS
^FT24,588^A0N,23,24^FH\^FDDariusz Nowak^FS
^FT25,786^A0N,23,24^FH\^FDdarek_operator^FS
^FT25,814^A0N,23,24^FH\^FDBorowskiego 2^FS
^FT25,842^A0N,23,24^FH\^FDWarszawa^FS
^FT25,869^A0N,23,24^FH\^FD03-745^FS
^FT25,897^A0N,23,24^FH\^FDdarek_operator^FS
^FT25,925^A0N,23,24^FH\^FD504866892^FS
^FT690,742^A0N,28,28^FH\^FD1.00 kg^FS
^FT563,1116^A0N,28,28^FH\^FD^FS
^FT509,1077^A0N,28,28^FH\^FD^FS
^FT645,950^A0N,20,19^FH\^FD2022-08-10 16:50^FS
^FT508,1036^A0N,28,28^FH\^FDStandard^FS
^FT616,910^A0N,28,28^FH\^FD1000.00 PLN^FS
^FT668,868^A0N,28,28^FH\^FD1000.00 PLN^FS
^FT623,702^A0N,28,28^FH\^FD1.50 cm^FS
^FT623,657^A0N,28,28^FH\^FD1.10 cm^FS
^FT623,618^A0N,28,28^FH\^FD1.10 cm^FS
^FT623,575^A0N,28,28^FH\^FDPaczka^FS
^FT691,784^A0N,28,28^FH\^FD0,00 kg^FS
^FT652,163^A0N,123,55^FH\^FDKRA^FS
^FO17,1184^GB789,0,1^FS
^FO805,1161^GB0,23,1^FS
^FO17,1161^GB0,23,1^FS
^FT86,1177^A0N,11,12^FH\^FDAdministratorem danych osobowych jest InPost Sp. z o.o. z siedziba ul. Wielicka 28, 30-552 Krakow. Wiecej informacji na inpost.pl.^FS

^PQ1,0,1,Y^XZ

Currently, when I want to rotate the label, I use PDF -> PNG -> rotate PNG -> ZPL. But it is very bothersome and loss of quality of the ZPL file.

I looked at some libraries on github like robgridley / zebra. Unfortunately, I do not see that they allow you to rotate zpl :(

1 Answers

Whole label

Option 1: Default orientation with ^FW

^FWr,z = Default Orientation
r = Orientation
    N = Normal 
    I = Invert
z = Justification
    N = Normal 
    I = Invert

Example: Rotate all fields by 90° ^FWR

Note: You will need to adjust positioning of fields as you are rotating the elements from the same starting positions they were before.

Option 2: Print normal or reverse with ^PO

^POo = Print Orientation 
N = Normal 
I = Invert

Example to print inverted: ^POI

By Field

Fields may have individual orientation you can adjust, individually. Example for font: ^Afo,h,w

^Afo,h,w = Font
f = Font (A-Z, 0-9)
o = Orientation
    N = Normal
    R = Rotate 90°
    I = Inverted 180°
    B = Bottom up 270°
h = height in dots
w = Width in dots

Example to print 90°: ^A0R,20,20

References

^FW https://support.zebra.com/cpws/docs/zpl/FW_Command.pdf

^PO https://support.zebra.com/cpws/docs/zpl/PO_Command.pdf

ZPL II Programming Guide https://support.zebra.com/cpws/docs/zpl/13979l-010_ra.pdf

Related