Use cases · Logistik dan pengiriman

PDF label pengiriman dalam skala carrier-grade

Render label pengiriman thermal 4×6 dengan barcode GS1-128 vektor, kode carton ITF-14, dan ID pallet SSCC-18. Render di edge menjaga p99 di bawah 15 ms, bahkan saat lonjakan Black Friday.

Job to be done

Merender label pengiriman thermal 4×6 yang siap untuk carrier — termasuk barcode GS1-128, ITF-14, dan SSCC-18 vektor — langsung dari JSON order, tanpa menyalakan headless browser per request. Output harus bisa discan andal pada 203 dpi di printer Zebra/SATO/Honeywell dan tetap di bawah p99 15 ms saat lonjakan retail puncak.

Why gPdf for this

  • Code 128, QR, DataMatrix, PDF417, serta GS1-128 / ITF-14 / SSCC-18 vektor — akurat sub-pixel pada 203 dpi, 300 dpi, dan 600 dpi.
  • Presisi koordinat 0,1 mm — memenuhi toleransi panjang keseluruhan carrier untuk baris interpretasi human-readable.
  • Ukuran halaman `label_4_6_in` (serta `label_4_8_in`, `label_a6`) sudah pre-configured untuk format printer thermal dominan.
  • Determinisme — JSON order yang sama dirender menjadi PDF byte-identical, sehingga reprint di gudang tidak pernah menghasilkan label yang 'berbeda'.
  • Render di edge — p50 3 ms, p99 8 ms, bahkan ketika 50K label dicetak dalam menit yang sama saat carrier pickup.
  • Stateless: label berada di memori sekitar 4 ms dalam isolate Cloudflare Worker, lalu dibebaskan. Tidak ada document store, tidak ada permukaan kebocoran data carrier.

Sample request

POST /api/v1/pdf/render — label thermal 4×6 minimal dengan barcode carrier-tracking Code 128.

{
  "pages": [{
    "size": "label_4_6_in",
    "elements": [
      {
        "type": "text",
        "x": 4, "y": 6,
        "content": "SHIP TO",
        "style": { "font_size": 8, "font_family": "NotoSans-Regular" }
      },
      {
        "type": "text",
        "x": 4, "y": 12,
        "content": "Acme Distribution Centre\n1200 Logistics Pkwy\nMemphis TN 38116",
        "style": { "font_size": 11, "font_family": "NotoSans-Regular" }
      },
      {
        "type": "barcode",
        "format": "code128",
        "content": "1Z999AA10123456784",
        "x": 4, "y": 60,
        "width": 92, "height": 22,
        "barcode_text": { "enabled": true, "position": "bottom" }
      }
    ]
  }]
}

Compliance and conformance

  • GS1 General Specifications — module width (X-dimension), quiet zone, dan panjang keseluruhan mengikuti toleransi GS1 Section 5.4 pada 203 dpi.
  • Mandat carrier — UPS, FedEx, DHL, dan USPS menerima output yang dirender sebagai scannable; tidak perlu post-processing per carrier.
  • PDF/A-2b tersedia untuk arsip melalui `settings.profile = "pdfa-2b"` jika Anda perlu menyimpan PDF label untuk alasan pajak/audit.

Workload shipping-label dalam satu paragraf

Setiap order menghasilkan satu PDF, setiap PDF dicetak sekali pada printer thermal, dan mode gagal ketika Anda lambat bukan “halaman dimuat pelan” — melainkan “pickup gudang antre di belakang API render label Anda.” Pengiriman adalah pekerjaan di mana latensi p99 adalah metrik produk, output deterministik penting karena reprint rutin, dan kualitas barcode — diukur dengan toleransi GS1 X-dimension, bukan pixel — menentukan apakah scanner membaca label pada percobaan pertama.

Stack PDF berbasis headless browser kesulitan menangani ketiganya sekaligus: biaya cold start menumpuk saat lonjakan, barcode raster menurun kualitasnya pada label thermal kecil, dan rasterisasi font bergeser antar versi Chromium, sehingga “reprint byte-identical” mustahil.

Mengapa gPdf cocok

Label thermal 4×6 itu kecil (576 × 864 pixel pada 203 dpi), jumlah elemennya rendah (blok teks + 1-2 barcode + logo carrier opsional), dan volumenya tinggi (3PL ukuran menengah merender 50K-500K per hari). Itulah workload yang memang dibangun untuk gPdf. Renderer:

  1. Mengompilasi layout sekali — koordinat halaman, font cascade, dan geometri barcode diselesaikan pada waktu request, bukan melalui browser layout engine.
  2. Memvektorisasi setiap barcode — modul digambar langsung ke PDF stream sehingga GS1-128 selebar 30 mm terbaca bersih pada 203 dpi atau 600 dpi tanpa logika rasterisasi sadar-DPI di sisi Anda.
  3. Meng-embed NotoSans CJK + Latin — payload yang sama merender nama carrier berbahasa Tionghoa dengan benar tanpa Anda menyediakan font di render container.

p99 datar di 8 ms pada workload referensi kami (1K invocation sampel di atas pada EU-WEST), terlepas dari apakah satu isolate baru merender satu label atau sudah merender 10K label.

Matematika volume + biaya

3PL ukuran menengah biasanya beroperasi sekitar 50K label/hari = ~1,5 juta/bulan. Pada Basic plan (US5/bulan untuk 100K halaman, US0,00005 per halaman overage):

1,5 juta halaman × US$0,00005   = US$75,00 overage
+ Basic plan base               =  US$5,00
─────────────────────────────────────
total                            = US$80,00 / bulan

Workload yang sama di Puppeteer-on-Lambda berjalan di kisaran US$200-400/bulan pada pengaturan concurrency Lambda yang umum, sebelum memperhitungkan cold-start tax saat puncak.

Black Friday: contoh kerja

Lonjakan puncak adalah workload di mana edge rendering paling jelas membayar dirinya. Pelanggan retail yang mencapai 200% dari volume label normal pada jam pertama Black Friday — misalnya 100K label dalam 60 menit, rata-rata 1,7K label/menit dengan burst puncak 5K/menit — selesai di dalam satu pool region Cloudflare Workers tanpa cold-start tax. Workload yang sama pada warm pool Puppeteer yang disizing untuk traffic rata-rata menghasilkan cold start 1,5-2,5 s pada container yang spawned saat burst, dan meja pickup gudang merasakan setiap detiknya.

Lihat berikutnya