P4 Software P4 Software / BarcoderX English

Add these docs to Claude

Ask Claude questions about these docs. Claude reads the published pages and links you back to them. Copy this address:

https://docs.p4software.cloud/mcp

In claude.ai or Claude Desktop: open Settings, then Connectors, choose Add custom connector and paste the address.

In Claude Code, run:

claude mcp add --transport http docs https://docs.p4software.cloud/mcp

Printing

Printing

Applies to: BarcoderX Basic and Ultimate

Status: Planned. Nothing is released yet and there is nothing to download. This page describes how printing is designed to work. The detail of each printer model comes from tests on real printers, and those tests are still to be done.

Two ways to print

RouteHow it worksWhat you need
From your own .NET applicationThe SDK builds the printer commands and sends them to the printer itself, over a connection such as TCP.The SDK. No web API and no agent.
From the webYour application or the label editor asks the web API to print. The API stores the job. The print agent on your network collects it and sends it to the printer.The web API and the print agent.

Two routes are not offered:

  • The server never opens a connection to a printer on your network by itself. It goes through the print agent.
  • A web page never prints to a port on your computer, and BarcoderX does not use a program installed on each workstation that a page launches.

How BarcoderX decides how to print each part of a label

A printer can draw some things itself, such as text in its own fonts, lines, boxes and barcodes. It can print anything else as a picture. For each part of a label, BarcoderX decides between four outcomes, using the printer profile:

OutcomeMeaning
NativeThe printer draws it with its own command, with the same result as the preview.
NativeApproximateThe printer draws it with its own command, and the result is close to the preview but not identical. Text in a printer-resident font is an example.
RasterBarcoderX sends it as a picture, exactly as in the preview.
UnsupportedThe printer cannot print it. The job is rejected with a diagnostic.

There are two render intents. Fidelity is the default: what you see in the preview is what prints. Text is sent as a picture unless the element names a printer-resident font, and barcodes use the printer's own command only where the printer profile marks it as equal in size and shape. NativePreferred gives smaller jobs and faster printing, and it warns you about every approximation. You can override the choice for one element with an output hint: Auto, Native or Graphic.

Every picture that BarcoderX puts in the printer commands is pixel for pixel the same as the preview. The same inputs always give the same printer commands, byte for byte.

Data in your labels can never end a command or inject another one. BarcoderX escapes all field data.

Printer profiles

A printer profile describes what one printer can do: its resolution, print width, memory, firmware features, resident fonts, and which of its own barcode commands match BarcoderX's. BarcoderX will include generic profiles:

  • ZPL at 203, 300 and 600 dpi.
  • EPL at 203 and 300 dpi.

Profiles for specific printer models and firmware are added from tests on real printers. You can also create your own profile based on a built-in one. The web API lists the profiles and the printer languages. See Printer languages.

Print settings

A label template or a print job can set darkness, speed, media type (direct thermal or thermal transfer), print mode (tear-off, peel-off, cutter or rewind), cut interval, label offsets, copies and mirror printing. For any setting, you can choose to leave the printer's own value in place. If a printer language does not have a setting, BarcoderX warns you and carries on.

A batch prints as one stream, and the printer's own quantity command repeats the copies.

Connections to the printer

ConnectionWhereWhat BarcoderX can read back
TCP, port 9100 by defaultAll platformsFull status
Serial portAll platformsFull status
Windows print queue (raw data)WindowsQueue and job state only
CUPSLinuxQueue and job state only
Raw USB deviceLinuxFull status
Windows page printing (GDI)WindowsQueue and job state only
Direct USB without a queueWindowsFull status

Parallel port and HID printers, and CUPS on macOS, are planned for later. BarcoderX shows clearly when a connection can report only the queue state and not the printer state.

With the connections that report full status, BarcoderX can ask a printer for its state, such as paper out, head open or ribbon out, when you ask for it and optionally before and after a job. The last answer is stored.

Print jobs

A print job moves through these states: Queued, Dispatched, Received, Spooled, Printed, Failed, Canceled or Expired. Every change is recorded.

  • Delivery is at least once, and the agent never prints the same job twice, even after a reconnect.
  • If the agent is offline, the job waits in Queued until an expiry that you can set, and then becomes Expired.
  • You can cancel a job until it is Spooled.
  • A failed connection to a printer is retried with growing pauses, and then the job is reported as Failed with a reason.
  • One job can hold several label sets, each with its own template, data and copies. They print in order in one session. A failed label set does not stop the others, unless you set the job to stop on error.
  • Job data is encrypted while it is stored and is purged after a retention period.

Other printing features

  • Graphic-mode printing serves printers that do not use a thermal printer language, and color printers. BarcoderX sends pictures of the pages through Windows page printing, or sends a PDF through CUPS on Linux. You can set paper size, margins, scale, orientation, copies and two-sided output.
  • RFID. On ZPL printers, BarcoderX can write tag data, such as an EPC. EPL printers cannot encode RFID, so a job that asks for it is rejected with a diagnostic. Passwords for tags are supplied with each job and are never stored in a template.
  • Raw commands. An element can carry printer commands for one printer language. It needs a special permission that is never granted by default, and the commands are checked before they are accepted. They are never run in the preview.
  • Printer storage. For jobs with many labels, BarcoderX can store pictures and label formats in the printer and call them back, instead of sending them again for each label. A stored picture can also be sent once under a name and used by that name.

Maintenance operations such as pause, resume, cut, calibrate, print a configuration label and reset are planned for later. Each will need its own permission and a confirmation.


BarcoderX is a product of P4 Software.

Was this page helpful?