Yayın tarihi:
UPS Shipping API, istek öyle diyorsa termal etiketi paket başına bir tane base64 ZPL olarak döndürür. FedEx'e kıyasla istek daha küçüktür — bir görüntü biçim kodu ve bir stok boyutu — ve çözünürlük alanı hiç yoktur; bu da önemli bir soruyu (noktalar hangi yoğunluk için yazıldı?) istekten dosyaya taşır. Bu sayfa alanları, yanıttaki etiket yolunu ve basmadan önce koşturulacak denetimleri listeler. Her kargo etiketi için geçerli kurallar kargo ZPL etiketleriyle çalışmak yazısında; FedEx karşılığı FedEx ZPL etiketi.
Aşağıdaki alan adları ve değerler, UPS'in GitHub'da yayımladığı Shipping API OpenAPI belirtiminden 2026-09-14'te okundu. API sürümleri arasında değişirler; güvenmeden önce güncel belirtimle doğrulayın. Labelixa'nın UPS ile bir bağı yoktur — bu bir iş akışı anlatımıdır, entegrasyon değil.
Çağrı POST /shipments/{version}/ship — Customer
Integration Environment için wwwcie.ups.com, üretim için
onlinetools.ups.com. Etiketi
ShipmentRequest.Shipment.LabelSpecification yönetir:
LabelImageFormat.Code — ZPL. Belirtim
GIF, ZPL, EPL (EPL2 için) ve
SPL sayar; iade etiketi basma servisli gönderilerin aynı
dördü kabul ettiğini, UPS Premier Silver gönderilerinin ise yalnız ZPL
desteklediğini not eder.LabelStockSize.Height ve Width — tam inç,
termal biçimlerde zorunlu. Genişlik 4; yükseklik
6 ya da 8. Belirtim iki kez okunmaya değer bir
not ekler: etiket görüntüsü 4×8 istense bile en fazla 4×6'ya
ölçeklenir.CharacterSet — etikette beklenen dil karakter kümesi, üç
harfli kod olarak: eng (Latin-1, varsayılan),
deu ve fra (Latin-1), tur
(Latin-5), pol (Latin-2), rus (Kiril) ve
diğerleri. Geri gelen baytları değiştirir; aşağıda önemi var.HTTPUserAgent — yalnız GIF çıktısı için anlamlı; ZPL'de
yok sayın."LabelSpecification": {
"LabelImageFormat": { "Code": "ZPL" },
"LabelStockSize": { "Height": "6", "Width": "4" }
}
Çözünürlük alanı yoktur. Belirtim ZPL'in hangi yoğunluk için yazıldığını söylemez; o yüzden varsaymayın, dosyadan okuyun (aşağıda).
Yol ShipmentResponse.ShipmentResults.PackageResults[] —
paket başına bir giriş; her birinde TrackingNumber ve
GraphicImage'ı base64 etiket, ImageFormat.Code'u
gerçekten dönen biçimi doğrulayan bir ShippingLabel nesnesi.
Belirtim, v2403 sürümünden itibaren paket sonuçlarının her
zaman dizi olduğunu, eski sürümlerin ise tek pakette çıplak nesne
döndürdüğünü not eder — "tek koliyle çalışıyor, ikiyle bozuluyor"un
klasik sebebi.
jq -r '.ShipmentResponse.ShipmentResults.PackageResults[0].ShippingLabel.GraphicImage' response.json | base64 -d > label.zpl
head -c 40 label.zpl # ^XA beklenir
Termal çıktı için iki alan daha önemli.
InternationalSignatureGraphicImage ABD dışı gönderilerde
EPL2, ZPL ve SPL için döner — gönderi başına bir görüntü, ilk paket
sonucunda — ve yok sayılacak bir ek değil, basılacak ikinci bir
etikettir. HTMLImage yalnız GIF ve PNG'de döner; ZPL'de
yokluğu normaldir. Belirtim ayrıca çok parçalı COD gönderilerinde ilk
paketin etiketinin, ne istenmiş olursa olsun her zaman GIF olduğunu not
eder — varsaymak yerine paket başına ImageFormat.Code
okuyun.
İstek çözünürlük taşımadığı için tek güvenilir kaynak dosyadır. Boyut ve DPI analizi bildirilen genişlik ve uzunluğu ZPL'den okur ve onları 4×6 (ya da 4×8) etikete oturtan yoğunluğu bildirir; dosya bildirmiyorsa tahmin etmek yerine bunu söyler. Sonra o yoğunluk ve stokta önizleyin:
curl -X POST "https://api.labelixa.com/v1/printers/8dpmm/labels/4x6/0" --data-binary @label.zpl --output label.png
Çözülen baytları olduğu gibi tutun. Varsayılan dışında bir karakter kümesi istediyseniz etiket baytları o kodlamayı izler; dosyayı UTF-8 olarak çözüp yeniden kodlamak her aksanlı ya da Türkçe karakteri değiştirebilir ya da reddedebilir, önizleme de tam o hasarı gösterir. Ham baytları önizlemeye ve değiştirmeden yazıcıya verin.
ImageFormat.Code
okuyun; ZPL kuyruğuna sızan bir GIF yazıcıya çöp bastırır ya da hiçbir
şey bastırmaz.curl -X POST "https://api.labelixa.com/v1/diagnostics?dpmm=8&w=4&h=6" --data-binary @label.zpl
Aynı kapı kabuktan ya da CI'dan npx labelixa validate
label.zpl olarak koşar; "error" düzeyinde bulguda sıfırdan farklı
kodla çıkar.
CharacterSet alanını kontrol edin ve yükü
ikili tutun.v2403
ve üstü bir sürüme geçin.LabelSpecification.LabelImageFormat.Code alanını ZPL yapın ve LabelStockSize'ı tam inç olarak Width 4, Height 6 (ya da 8) verin. Belirtim, 4×8 istense bile görüntünün en fazla 4×6'ya ölçeklendiğini not eder.
ShipmentResponse.ShipmentResults.PackageResults[].ShippingLabel.GraphicImage içinde, base64 kodlu, paket başına bir giriş; ImageFormat.Code biçimi doğrular. v2403'ten itibaren paket sonuçları her zaman dizidir.
Hayır — belirtimde çözünürlük alanı yok. Yoğunluğu boyut ve DPI analiziyle dosyadan okuyun, sonra o yoğunlukta önizleyin ve basın.
ZPL, Zebra termal yazıcıların anladığı komut dilidir. Komutların nasıl okunacağını, bir etiketin nasıl kurulduğunu ve en sık yapılan hataları anlatıyoruz.
Hangi barkod türünü seçmeliyim?EAN-13 mi, Code 128 mi, QR mı? Barkod türünü veriye, alana ve okuyucuya göre seçmenin pratik kuralları.
ZPL dosyası yazıcısız nasıl önizlenir?ZPL dosyası yalnızca metindir — etiket ancak biri onu çizdiğinde var olur. ZPL etiketini yazıcıya gitmeden görmenin üç pratik yolu.