ZplCore.VectorLift 1.0.0

dotnet add package ZplCore.VectorLift --version 1.0.0
                    
NuGet\Install-Package ZplCore.VectorLift -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ZplCore.VectorLift" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ZplCore.VectorLift" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="ZplCore.VectorLift" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ZplCore.VectorLift --version 1.0.0
                    
#r "nuget: ZplCore.VectorLift, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ZplCore.VectorLift@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ZplCore.VectorLift&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=ZplCore.VectorLift&version=1.0.0
                    
Install as a Cake Tool

zplCore.com

High Performance .NET Labelprint Engine

.NET 10 library (ZplCore.dll) built on SkiaSharp + HarfBuzz. One assembly contains:

  1. ZPL renderer (ZplRenderer): a virtual Zebra printer, ZPL II → PNG / JPEG / WebP / BMP / PDF / GRF / TIFF / GIF / SVG / HTML / EPS / PCX / PCL / EPL / Fingerprint / ESC/POS. Structured diagnostics with source positions.
  2. Label model (Labels.Label): items in mm/inch → ZPL, preview, JSON, expressions, mass data binding (LINQ / EF Core / LiteDB).
  3. Printing (Printing): TCP 9100, serial, USB, parallel, Windows spooler, CUPS; job settings (^MM ^MN ^MT …), ~HS/~HQES status, USB discovery, dry run, and a virtual TCP 9100 printer (ZplVirtualPrinter).
  4. Export (Export.RasterExport, Export.LabelLanguageWriter): PCX, TIFF, EPL, Fingerprint, ESC/POS, PCL.
  5. EPL2 renderer (EplRenderer): renders EPL2 through the same engine. ToZpl() is an EPL→ZPL converter.
  6. Barcode generator (Barcodes.Barcode): 144 symbologies, with output to PNG/JPEG/WebP, vector SVG/PDF/EPS, ZPL ^GFA, or any SKCanvas.
  7. GS1 (Barcodes.Gs1): Application Identifier parser and validator (534 AIs), GS1-128, SSCC-18, ITF-14 and composite codes (CC-A/B/C).

This is an independent implementation based on the public ZPL II specification and the symbology standards.

Documentation: zplcore.com/docs. Full API reference: zplcore.com/api-reference.

Performance: 200,000+ shipping labels per second (real 100 × 150 mm / 4 × 6 in label with 33 elements, QR + Code 128

  • GS1-128; dictionary or JSON records → ZPL file, JIT and NativeAOT), 100,000 shipping labels in under half a second, over 1,000 PNG previews per second (all cores) and over 100,000 labels per second straight from C# objects (POCO, JIT). Measured on an Apple M3 Max (14 cores), macOS, .NET 10, median of 5 runs, byte-identical output checked. Details and Docker/NativeAOT results: zplcore.com/performance. Measurements, not a guarantee.

Licence key

zplCore is commercial software (EULA). The licence key is checked offline against its signature: no phone-home, no telemetry, works air-gapped. Without a key everything works in evaluation mode, and previews, images, PDF/SVG and generated ZPL carry a visible "zplCore.com TRIAL" watermark. Register the key once at start-up:

ZplCore.Licensing.ZplCoreLicense.Register(builder.Configuration["ZplCore:License"]!);

Alternatively, set the environment variable ZPLCORE_LICENSE (the key), ZPLCORE_LICENSE_FILE (path of a file), or put a file zplcore.license next to the application. ZplCoreLicense.Status tells you what was found. Keep the key secret and never commit it. Pricing and licensing: zplcore.com/pricing.

Quickstart

using ZplCore;

var renderer = new ZplRenderer(new ZplRenderSettings { Dpi = 203 }.WithLabelSizeMm(100, 150));
List<byte[]> pngs = renderer.ProcessFile("labels.zpl");          // one PNG per label

renderer.Settings.OutputFormat = ZplOutputFormat.Pdf;             // one PDF, one page per label
File.WriteAllBytes("preview.pdf", renderer.ProcessFile("labels.zpl")[0]);
using ZplCore.Labels;

var label = new Label(LabelUnit.Mm, 100, 60)
    .AddFontFile("fonts/Arial.ttf", "ARIAL.TTF")                      // sent to the printer via ~DY
    .Add(new TextItem { X = 5, Y = 5, DataField = "Customer.Name", Font = "E:ARIAL.TTF", FontSize = 14 })
    .Add(new BarcodeItem { X = 5, Y = 20, DataField = "TrackingNo" })
    .Add(new TextItem { X = 5, Y = 50, Expression = "\"Paket \" + LABEL_NUMBER" });

// EF Core: streaming, ^DF template once, then only field values
await label.For<Shipment>()
    .Copies(s => s.Parcels)
    .UseStoredFormat()
    .PrintAsync(new ZplCore.Printing.ZplPrinterClient("192.168.1.50"),
                db.Shipments.Include(s => s.Customer).Where(s => !s.Printed).AsAsyncEnumerable());
// EPL2
var epl = new EplRenderer(new ZplRenderSettings { Dpi = 203 });
List<byte[]> labels = epl.ProcessFile("label.epl");
string zpl = epl.ToZpl(File.ReadAllText("label.epl"));   // migrate EPL forms to ZPL

// Stand-alone barcodes
var bc = new ZplCore.Barcodes.Barcode
{
    Symbology = ZplCore.Barcodes.Symbology.Gs1_128,
    Code = "(01)09521234543213(10)LOT42",
    Unit = ZplCore.Barcodes.BarcodeUnit.Millimeter, BarWidth = 0.33, BarHeight = 20,
};
File.WriteAllText("gs1.svg", bc.ToSvg());
File.WriteAllBytes("gs1.pdf", bc.ToPdf());

// GS1 validation
var r = ZplCore.Barcodes.Gs1.Parse("(01)09521234543213(17)251301");   // r.Errors → invalid date
// ^FN fields: test data for templates (plain labels and ^DF/^XF formats, all labels and ^PQ copies)
var filler = new ZplRenderer(new ZplRenderSettings { FieldValues = new Dictionary<int, string> { [1] = "ACME", [2] = "Vienna" } });
List<byte[]> filled = filler.ProcessFile("template.zpl");       // unknown keys → diagnostic ZPL1301 (INVALID_FIELD_VALUE_KEY)
foreach (var f in ZplCore.Parsing.ZplFields.Find(zpl))          // number, ^FN1"Prompt", default value, ^DF format
    Console.WriteLine($"{f.Number}: {f.Prompt} = {f.Value}");
string merged = ZplCore.Parsing.ZplFields.Fill(zpl, filler.Settings.FieldValues!); // ^FN → ^FD, ^XF expanded
using ZplCore.Labels;

var job = PrintJobTemplate.FromFiles("templates/leading.json", "templates/shipping.json", "templates/trailing.json");
job.JobName = "Tour 7";
job.KeyField = "TrackingNo";          // first/last key on the trailing label
job.CutAfterLastLabel = true;         // ^MMT for all labels, ^MMC only for the last one
job.StoredFormatName = "R:SHIP.ZPL";  // optional: template once, then only field values

string zpl = job.For<Shipment>().ToZpl(db.Shipments.Where(s => !s.Printed).Take(50).ToList());
File.WriteAllText("job.zpl", zpl);    // 52 labels in ONE file

Leading and trailing labels bind to PrintJobInfo: JobName, Created, RecordCount, LabelCount, FirstKey and LastKey.

Features

Area Contents
Format and setup ^XA ^XZ ^PW ^LL ^LH ^LS ^LT ^LR ^PO ^PM ^MU ^PQ ^CI ^CC ^CT ^CD ^FX ^JM ^MC
Fields ^FO ^FT ^FS ^FD ^FV ^FH ^FR ^FB ^TB ^FP ^FW ^FN ^SN ^SF ^FC ^SO ^ST ^RF
Fonts ^A (0, A–H), ^A@, ^CF ^CW ^FL ^PA, ~DY ~DU ~DB; embedded DejaVu fonts; any TTF via RegisterFont/RegisterFolder; HarfBuzz shaping for Arabic, Hebrew, Thai and Indic scripts; bidi; system font fallback (CJK)
Graphics ^GB ^GC ^GE ^GD ^GF (hex with compression, Z64, B64, binary), ~DG ^XG ^IM ~DY ^ID ~EG ^GS ^IS ^IL ^TO
ZPL barcodes ^BC ^B3 ^BA ^BE ^B8 ^BU ^B9 ^B2 ^BK ^BM ^BP ^B1 ^BI ^BJ ^BL ^BS ^BZ (incl. Intelligent Mail) ^B5 ^BQ ^BX ^B7 ^BF ^BB ^B4 ^B0/^BO ^BD ^BR ^BT, ^FM
Barcode generator Code 128, GS1-128, Code 39/93 (incl. extended), Code 11, Codabar, MSI, Plessey, Telepen, Pharmacode (one- and two-track), Channel Code, EAN/UPC/JAN/ISBN/ISSN/ISMN with add-ons, 2 of 5 family, ITF-14, SSCC-18, EAN-14, VIN, HIBC, LOGMARS, PZN, Code 32, Leitcode/Identcode, GS1 DataBar (all 7), postal codes (POSTNET, PLANET, IMb, Royal Mail, KIX, Australia Post, Japan Post, DAFT, FIM), PDF417 (compact/macro), MicroPDF417, Codablock F, Code 16K, Code 49, QR, Micro QR, rMQR, GS1 QR, Swiss QR, EPC QR, Data Matrix (square/rectangular/DMRE/GS1), Aztec (runes, GS1), MaxiCode, Han Xin, DotCode, Ultracode, GS1 Composite CC-A/B/C, TLC39, Deutsche Post BZL (experimental, ZPLBZL001), JAB Code (experimental)
EPL2 N q Q R A B b X LO LE LW LS GW GM GG GK FS FE FK FR V C ? P TS TT TD ZT ZB; fonts 1–5 at 203/300 dpi; forms with variables and counters
Stored formats ^DF ^XF ^FN, ZplRenderSettings.FieldValues (fill ^FN per render), ZplFields.Find/Fill
Printer ~JR, ~WC config label, ~HS answered through the PrinterControl event; all other control commands are reported through PrinterControl
Renderer settings DPI, size, colors, background and watermark image, rotation, invert, thumbnails, RenderOutputIndexes, PDF metadata, PDF/A and tagged PDF, PDF sheet layout, ToJson/FromJson
Label model Text, Barcode, Rectangle, Line, Ellipse, Circle, Image, Table, Repeater, RFID and raw ZPL items. Text supports AutoFit, MaxLength, HideIfEmpty, Validation and InputMask. Also: PrintAsGraphic, embedded TTF, expressions, Validate, ToHtml, JSON
Print jobs LabelBinding.Job/WithLeadingLabel/WithTrailingLabel/CutAfterLastLabel, PrintJobTemplate (built from one JSON or from three JSON templates)
Label extras Mask counters (Mask/MaskIncrement), LabelSheet (sheets of labels), multi-page and duplex labels (Label.Pages), EPL/Fingerprint output with data binding, expression type references
ZPL object model ZplDocument.Parse with typed commands (98 classes) and lossless round-trip; fluent ZplBuilder
Printing IPrinterConnection: TCP 9100, serial, raw device or file (USB/LPT), Windows spooler (RAW), CUPS, stream; PrinterConnectionFactory
Renderer outputs PNG, JPEG, WebP, BMP, PDF (incl. sheets; vector with searchable text by default, optional PDF/A-2 b/u/a and tagged PDF), SVG (vector, see below), GRF, TIFF (multi-page), PCX, PCL, EPL, Fingerprint, ESC/POS, GIF, HTML, EPS
Barcode extras QR module and finder shapes, logo, light margin indicators, text format patterns, Base64/Hex input, tilde/ECI, QR version and mask, structured append (QR, Data Matrix, Aztec, MaxiCode, PDF417), TIFF/PCX/PCL/EPS (CMYK) and HTML output
Compliance pre-check ZplCompliance.Check(zpl, CompliancePacks.Gs1LogisticLabel \| …): 84 rules in 8 packs (GS1 logistic label, Sunrise 2027 / GS1 Digital Link, Amazon FBA, UPS MaxiCode, UDI, FedEx and DHL Paket basics, RFID / EPC) on the rendered geometry (X-dimension in mm, bar height, quiet zones, HRI size); custom rules; JSON and SARIF 2.1.0; CLI zplcore comply — a pre-check, not a certification
Scan-proof (barcode assurance) ZplScanProof.Verify(zpl): every barcode decoded back from the rendered bitmap by two independent decoders (zxing-cpp, ZXing.Net) and compared with the field data; X-dimension, quiet zones, clipping, overlaps, HRI; digital grade A–F modelled on ISO/IEC 15416/15415 (a pre-check, not an ISO verification); JSON/SARIF; CLI zplcore verify
Vector-Lift (PDF/SVG → native ZPL) Package ZplCore.VectorLift: VectorLift.Convert(pdf or svg, options) turns carrier/ERP label PDFs and SVGs into native ZPL – text as ^A0 fields (or ^A@ with a downloaded font you own), barcodes decoded and regenerated as ^BC ^BE ^B8 ^BU ^B9 ^B3 ^BA ^B2 ^BK ^BQ ^BX ^B7 ^BO ^BD (also from raster images) and verified by decoding, lines/boxes/circles as ^GB ^GD ^GC ^GE, ^GF only for the rest; measured fidelity against the original (PDFium/Skia), per-element report, size vs. a full ^GF; CLI zplcore lift
GS1 Digital Link / 2D migration Gs1DigitalLink.Build/Parse (URI Syntax 1.7.0, element string ⇄ URI, legacy decompression) and ZplGs1Migration.Migrate: adds a QR Code with GS1 Digital Link URI or a GS1 DataMatrix next to the EAN/UPC, GS1-128, ITF-14 or DataBar of existing ZPL, in free space with quiet zones, and runs the sunrise pre-check; CLI zplcore gs1 migrate|link|parse — a migration assistant, not a certification
RFID Studio ZplRfid.EncodeEpc/DecodeEpc: EPC after the GS1 EPC Tag Data Standard 2.3 (SGTIN-96/198, SSCC-96, SGLN-96/195, GRAI-96/170, GIAI-96/202 and the TDS 2.0 schemes SGTIN+, DSGTIN+, SSCC+, SGLN+, GRAI+, GIAI+; Pure Identity / Tag URI, Digital Link, PC word), ZplRfid.BuildCommands (^RS ^RR ^RW ^RB ^RF ^HV ^RLM), consistency check EPC ↔ printed barcode (ZplRfid.Check, codes ZPL3901–ZPL3912), Gen2 tag simulation (ZplRfidSimulator, ZplVirtualPrinter.RfidSimulator); CLI zplcore rfid encode\|decode\|check\|simulate
Testing+ (label tests and PR checks) NuGet ZplCore.Testing: ZplAssert.Label(zpl).Barcode("SSCC").Decodes("(00)…").HasGrade(atLeast: 'B').And.NoOverlaps().Complies(…).MatchesSnapshot("name") for xUnit/NUnit/MSTest with element positions, ZPL lines and annotated images in failure messages; pixel + semantic snapshots with approval workflow; CLI zplcore check (JUnit XML, SARIF, Markdown, exit codes) and the GitHub Action zplcore/label-check (Marketplace publication planned) with PR comment and before/after/diff images
Label understanding & redaction ZplExtract.Run(zpl): texts with roles, barcode data (GS1 AIs with titles and validity, Digital Link, MaxiCode / PDF417 carrier messages) and entities with confidence, source boxes and evidence — address blocks in 8 languages, tracking numbers (UPS, FedEx, DHL, USPS, UPU S10 …) with check digits, SSCC/GTIN/batch/expiry, dates, weights, references. ZplRedact.Run(zpl): same-layout redaction of personal data incl. ^FX, ^DF/^XF, ^FN, ^SN, ^RF and carrier messages, valid dummy barcodes, verification. Assistive and rule-based, no guarantee of completeness; CLI zplcore extract / redact
Data binding label.For<T>(): Map, Copies, UseStoredFormat, Across (multi-across), Generate, WriteZplAsync, Batches, PrintAsync, Render, RenderPdf. Nested paths, DataRow, dictionaries and LiteDB BsonDocument are supported, with compiled accessors. [ZplRecord] on a class, record or struct: the package's source generator writes its field readers at compile time – no reflection, the same output, NativeAOT without TrimmerRootAssembly, and data-only types are generated on all cores

RFID watermark in previews

Labels with an RFID tag operation (^RF, ^WT, ^WF, ^RQ; ^RS/^RB setup alone does not count) show a grey RFID tag pictogram in previews, like common ZPL viewers: centred, about 0.86" wide (independent of the label size), behind all label content (ink pixels stay unchanged) and turned with ^PO I. SVG and vector PDF get it as a vector path (<g class="rfid-indicator">).

var s = new ZplRenderSettings
{
    RfidIndicator = ZplRfidIndicator.Watermark,   // default; None switches it off
    RfidIndicatorColor = new SKColor(0xC0, 0xC0, 0xC0),
    RfidIndicatorOpacity = 1f,
};

Only PNG, JPEG, WebP, BMP, GIF, PDF, SVG, HTML and EPS show it. Printer languages (GRF, EPL, PCL, Fingerprint, ESC/POS) and the 1-bit TIFF/PCX files never contain it.

Vector output (SVG/PDF)

ZplOutputFormat.Svg produces true vector graphics: frames, lines, circles, ellipses and diagonals (^GB ^GC ^GE ^GD, also rounded and white) as paths (arcs as A segments), barcodes as module rectangles and text as glyph outlines from the same layout as the raster image (HarfBuzz shaping, fonts 0 and A–H, ^FB/^TB, rotations). The SVG therefore looks identical even without the fonts installed and stays sharp at any zoom. Each field is a <g> with data-cmd, data-offset and data-length (the ^FO…^FS source span in the ZPL), so a web UI can map clicks back to ZPL positions.

var renderer = new ZplRenderer(new ZplRenderSettings { Dpi = 203 }.WithLabelSizeMm(100, 150));
List<string> svgs = renderer.RenderSvg(zpl);              // one SVG document per label, independent of OutputFormat

// or via OutputFormat, with options
var settings = new ZplRenderSettings
{
    OutputFormat = ZplOutputFormat.Svg,
    SvgSelectableText = true,       // additional invisible <text> over single-line text fields (selectable/searchable)
    SvgElementAttributes = true,    // data-cmd/data-offset/data-length (default)
};
byte[] svg = new ZplRenderer(settings).ProcessCommands(zpl)[0];

// Vector PDF is the default; PdfVector = false embeds one lossless image per label at label dpi
byte[] pdf = new ZplRenderer(new ZplRenderSettings { OutputFormat = ZplOutputFormat.Pdf }).ProcessCommands(zpl)[0];
  • SvgMode = ZplSvgMode.TracedRaster gives the earlier SVG (raster image split into rectangles), ZplSvgMode.EmbeddedRaster embeds the PNG.
  • ^GF, ~DG/^XG, ^IM and ^IL are embedded as a 1-bit PNG (<image>) at their position; bitmap fonts loaded via ~DB are split into rectangles pixel-exactly.
  • ^FR/^LR (XOR): where the field ink sits over pure black or pure white, the field stays vector (paper or ink colour, e.g. white text on a black bar). Over a mixed background only that field area is embedded as an image from the raster.
  • ^PO I, ^PM, ^LH, ^LS, label size, colours, background and watermark image, OutputRotation, Flip and PaperOrientation apply like for the raster image; vector PDF also supports sheet layout.
  • Text is never written as font text, always as a path. This avoids Skia's non-thread-safe SVG/PDF text path (DirectWrite on Windows); parallel rendering is safe.
  • PdfVector is on by default (sharp at any zoom); PdfVector = false gives the raster PDF. All images in PDFs are embedded losslessly (never JPEG).

Accuracy against a real printer

A ZPL corpus is rendered and compared pixel by pixel, with 2-dot tolerance, against printer-accurate reference renders (Labelary). Mean score 0.974 over 122 cases (79 cases ≥ 0.99). Identical or ≥ 0.99: font 0 in all sizes and rotations, ^FB, ^TB, ^FT, ^FR/^LR, shapes, ^GF, all 1D barcodes, EAN/UPC layout, Code 128 modes, POSTNET, MaxiCode, Aztec.

Zebra behaviour this reproduces: font 0 advance widths per character; QR position offset by the ^BY height, and QR error correction boosting; Code 128 mode N stays in subset B; barcode text overflows outside the field; wide element width is floor(ratio × module); ^TB line pitch is 1.26 × h; font B is uppercase only, font H has no lowercase; ^FN together with ^FD in a stored format is a fixed field.

Limits

  • Remaining visual differences to Zebra (all symbols still decode correctly): the DataMatrix encodation when ASCII and Text are the same length; the glyph shapes of the bitmap fonts A–H. Macro PDF417 (^B7 with ^FM) and the MicroPDF417 part of ^BT are not verified against Labelary.
  • QR (^BQ, model 2) is module-identical with Labelary: mode segmentation, version, error correction boost and mask (ISO/IEC 18004 penalty on the complete symbol), verified on more than 3,600 symbols (versions 1–33, all levels and masks, manual input modes, GS1, ^CI28). Model 1 (^BQ…,1) is printed as model 2.
  • Zebra's resident fonts are proprietary, so DejaVu replaces them. Register the original TTF if you need identical metrics.
  • Not implemented (no public specification): Response Plus PostMatrix, Pharmacode 2D, HIBC ISO/IEC 15434 envelope. ISBT 128 helpers cover DS001–DS011 only.
  • Experimental: Deutsche Post BZL ([Experimental("ZPLBZL001")]) and JAB Code; the JAB Code encoder is slow (about 0.5 s for 120 random Unicode characters).
  • On Linux the glyph rasterisation differs slightly (FreeType vs CoreText).
  • All encoders ported from BWIPP are bit-exact against bwip-js; ZXing decode tests are added where ZXing supports the symbology.
  • Fingerprint output has not been tested on hardware.

Platforms, scripts and databases

  • Verified on macOS, Windows 11, Debian and Azure Linux 3.0 (SDK, runtime and distroless runtime); no native packages required.
  • NativeAOT-compatible: ZplCore, ZplCore.VectorLift, ZplCore.Testing, the CLI and the MCP server are IsAotCompatible with 0 trim/AOT warnings; AOT output is byte- and pixel-identical to JIT. POCO binding of nested types needs <TrimmerRootAssembly> (otherwise a MissingMemberException, never empty fields) – or [ZplRecord] on the types (source generator, no reflection).
  • World scripts (Arabic, Chinese, Hindi, Korean, Japanese, Russian) render with downloaded Noto TTFs, both via ~DU + ^A@ and as graphics.
  • Data binding works with SQLite (EF Core), LiteDB, SQL Server 2022, PostgreSQL and MongoDB.

Command line tool

The CLI ships as the separate .NET tool package ZplCore.Cli (command zplcore): render, convert EPL→ZPL, print to network printers, generate barcodes, validate, format, diff, import, compliance pre-check, scan-proof, Vector-Lift, GS1 2D migration, extract and redact. An MCP server for coding agents ships as ZplCore.Mcp (command zplcore-mcp). See zplcore.com/docs.

Server image, Designer and Capture

  • Server image and Helm chart: a container image renders over HTTP (/api/jobs/preview), deployable with the Helm chart. See zplcore.com/server.
  • zplCore Designer: embeddable WYSIWYG label editor (NuGet ZplCore.Designer, Docker image, JavaScript SDK @zplcore/designer, Web Component and Blazor). Licensed separately (requires a zplCore SDK licence of the same or a higher tier). See zplcore.com/docs/designer, try it: zplcore.com/editor.
  • Artistic codes: logo QR, module and finder shapes, gradient fills and barcode motifs; every designed symbol is read back after rendering and weakened or reported when it does not scan. See zplcore.com/artistic.
  • zplCore Capture: Windows app that turns labels from existing label software into zplCore JSON templates by reading only the print job. Provided on request. See zplcore.com/migration.

Trademarks

Zebra, ZPL, ZPL II, EPL and Link-OS are trademarks or registered trademarks of Zebra Technologies Corp. QR Code is a registered trademark of DENSO WAVE INCORPORATED. GS1, GS1 DataBar, GS1 Digital Link, EPC and EPCglobal are trademarks of GS1 AISBL. ESC/POS is a registered trademark of Seiko Epson Corporation, Intelligent Mail a registered trademark of the United States Postal Service and Mailmark a registered trademark of Royal Mail Group Ltd. Other product and company names and logos mentioned are trademarks or registered trademarks of their respective owners. We use these names only to describe compatibility with file formats, printer languages and standards. zplCore.com is an independent product and is not endorsed, sponsored or certified by these companies; compliance packs are pre-checks, not certifications.

Contact: support@zplcore.com

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 42 10/27/2026