marklife / node/src / MarklifePrinter
Class: MarklifePrinter
Node.js driver for the marklife family.
Takes any Transport from @thermal-label/transport/node — SerialTransport over an OS-paired RFCOMM port is the typical case — and a DeviceEntry from the registry. The job is encoded by encodeJobForEngine and fed to the transport in registry-sized packets with a pause between them; see pacingFor in core for why that happens here rather than in the transport.
Marklife chassis are single-engine — the encoder uses device.engines[0].
Implements
Constructors
Constructor
new MarklifePrinter(
device,transport,transportType,options?):MarklifePrinter
Parameters
device
transport
transportType
options?
Returns
MarklifePrinter
Properties
device
readonlydevice:DeviceEntry
The device entry for the connected printer.
Useful for logging, diagnostics, and displaying VID/PID. Undefined if the connection was established without device matching (e.g. a raw TCP connection to a known IP).
Implementation of
PrinterAdapter.device
family
readonlyfamily:"marklife"
Driver family identifier, e.g. 'brother-ql' or 'labelwriter'.
Implementation of
PrinterAdapter.family
transportType
readonlytransportType:TransportType
Accessors
connected
Get Signature
get connected():
boolean
Whether the printer is currently connected.
Returns
boolean
Implementation of
PrinterAdapter.connected
model
Get Signature
get model():
string
Human-readable model name from the driver's device registry.
Returns
string
Implementation of
PrinterAdapter.model
Methods
close()
close():
Promise<void>
Close the connection. Always call in finally blocks.
Returns
Promise<void>
Implementation of
PrinterAdapter.close
createPreview()
createPreview(
image,options?):Promise<PreviewResult>
Generate a preview showing how this printer would reproduce the design on the given media. Returns separated 1bpp planes with display colours.
The driver uses its own colour-splitting logic (the same code that print() uses internally) to produce the planes. The consuming app renders whatever planes come back without needing to know the splitting rules.
For offline preview without a live connection, use the static createPreviewOffline() function exported from the driver's *-core package instead.
Parameters
image
— full RGBA, typically from designer.render().
options?
— optional media override. If media is omitted, uses detected media from the last getStatus(). If no status is available, the driver defaults to single-colour at the printer's native head width and sets PreviewResult.assumed = true.
Returns
Promise<PreviewResult>
Implementation of
PrinterAdapter.createPreview
getStatus()
getStatus():
Promise<MarklifeStatus>
No marklife chassis has a status query wired yet, so this reports link state only and touches no wire. It still runs under the serializer so a poll can never land inside a job once it does.
Returns
Promise<MarklifeStatus>
Implementation of
PrinterAdapter.getStatus
print()
print(
image,media?,options?):Promise<void>
Print from a full-colour RGBA image.
The driver converts to its native format internally:
- Single-colour media (
media.paletteundefined) — threshold/dither RGBA to a single 1bpp plane viarenderImage. - Multi-ink media (
media.palettedefined) — split into planes viarenderMultiPlaneImageusing that palette.
Orientation: drivers compute the rotation via pickRotation (see ./orientation.ts) — the input image is treated as the intended visual; the driver auto-rotates landscape input on media tagged defaultOrientation: 'horizontal'.
Multi-ink splitting: the palette on the media descriptor names every ink the driver should classify pixels into; the contracts package does not pick "red" or "black" — those facts live with the media entry.
Batch printing: call print() once per label. The driver handles job framing internally (e.g. Brother QL page-break commands between sequential print() calls within the same session).
Parameters
image
— full RGBA, typically from designer.render().
media?
— which media to print on. Determines dimensions, margins, and colour mode. If omitted, uses detected media from the last getStatus().
options?
— per-call options (copies, density, etc.).
Returns
Promise<void>
Throws
MediaNotSpecifiedError if no media is known.
Implementation of
PrinterAdapter.print