19GS1 Digital Link & Sunrise 2027 migration
For the move to 2D barcodes at the point of sale ("Sunrise 2027"): Gs1DigitalLink builds, validates and parses GS1 Digital Link URIs after URI Syntax 1.7.0 (element string ⇄ URI, custom domain, canonical URI). ZplGs1Migration adds a QR Code with a Digital Link URI or a GS1 DataMatrix to existing ZPL labels – in free space next to the EAN/UPC, with quiet zone and clearance measured on the rendered label – and checks the result with the sunrise pack.
Try it online on zplCloud.com: Sunrise 2027 Migration
More on zplCloud.com: Blog: GS1 Sunrise 2027: 2D barcodes at the checkout · Blog: GS1 QR Code and the Digital Product Passport · Guide: GS1 AI database · Template: GS1 QR Code with Digital Product Passport
// using ZplCore.Barcodes; using ZplCore.Tools;
string uri = Gs1DigitalLink.Build("(01)09520123456788(17)280426(10)ABC1(21)12345");
// https://id.gs1.org/01/09520123456788/10/ABC1/21/12345?17=280426
var parsed = Gs1DigitalLink.Parse("https://id.gs1.org/01/09520123456788/10/ABC1?17=280426");
Console.WriteLine($"{parsed.IsValid} {parsed.ToElementString()}"); // True (01)09520123456788(17)280426(10)ABC1
var migration = ZplGs1Migration.Migrate(zpl, new Gs1MigrationOptions
{
Carrier = Gs1MigrationCarrier.QrCodeDigitalLink, // or DataMatrixElementString
DigitalLinkStem = "https://brand.example.com", // own domain, else https://id.gs1.org
});
File.WriteAllText("label-2d.zpl", migration.MigratedZpl); // QR Code next to the EAN-13, with quiet zone
Console.WriteLine(migration.ToText()); // placement + sunrise pre-check of the result
zplcore gs1 link "(01)09520123456788(10)ABC1" [--domain https://brand.example.com] zplcore gs1 parse "https://id.gs1.org/01/09520123456788/10/ABC1" [--format json] zplcore gs1 migrate retail-ean13.zpl --domain https://brand.example.com -o retail-2d.zpl [--carrier qr|datamatrix] [--preview out.png]
Before: EAN-13 only

After: EAN-13 + QR with GS1 Digital Link

An assistant and pre-check, not a certification: verify printed labels with a barcode verifier and agree on them with your GS1 Member Organisation or retailer. ^BQ cannot encode FNC1, so a GS1 QR Code with element strings is not possible in ZPL – the QR Code carries the Digital Link URI. Legacy compressed Digital Link URIs are read only. GS1, GS1 DataMatrix and GS1 Digital Link are trademarks of GS1 AISBL.

