VirtualESCPOSDevice

Revision as of 15:22, 20 April 2025 by Wikiadmin (talk | contribs)
VirtualESCPOSDevice

Virtual ESC/POS Device

Developer Netroda Technologies
Type Graphics Device and Imaging Library
Purpose Receipt generation
Printing
Receipt conversion
Compatibility ESC/POS (Epson)
NCR (Partial support)
Initial Release 2014 with ES/S-B J1 Positive
Current Version 1.5.0 (20 Apr. 2025)
License N.P.A.L.
Platform Extensible Services / Server
Derived from
  • ES/S-B LPR Printer Drivers
    • ↳ ES/S-B Native LPR Drivers
Associated VirtualESCP2Device


VirtualESCPOSDevice (as in Virtual ESC/POS Device) is a collection of classes and functions, used to generate, print and convert descriptive datastreams (directives) into HTML, Bitmap Images and PDF together with a Native EPSON ESC/POS Output stream.

Overview

VirtualESCPOSDevice is a versatile software component designed to facilitate the generation, printing, and conversion of descriptive datastreams—referred to as directives—into multiple output formats, including HTML, bitmap images, PDF, and native EPSON ESC/POS streams. It serves as an abstraction layer that allows developers to work seamlessly with a wide range of receipt printer models, including legacy and limited-functionality devices.

VirtualESCPOSDevice supports all common barcode and QR code symbologies, ensuring consistent output regardless of the specific capabilities of the connected printing hardware.

For the associated Full-page line printer devices from various manufacturers, the VirtualESCP2Device implementation exists.

Technical

Symbol and Barcode Rendering in VirtualESCPOSDevice

VirtualESCPOSDevice leverages device-independent symbol libraries to ensure accurate and consistent rendering of barcodes and symbols across all supported output formats, regardless of the target printer's native capabilities. This approach allows the system to overcome limitations commonly found in older or basic ESC/POS devices, which may lack built-in support for modern symbologies or advanced rendering features.

When a directive specifies a barcode, QR code, or other symbol, VirtualESCPOSDevice performs the following process:

  • Parsing and Validation

The directive is parsed to extract the symbol type, data content, and formatting instructions (e.g., size, alignment, error correction level).

  • Library-Based Rendering

Instead of relying on the ESC/POS device to interpret and generate the symbol, VirtualESCPOSDevice uses an integrated set of high-performance, device-agnostic rendering libraries. These libraries generate a high-fidelity bitmap representation of the specified symbol.

  • Image Embedding

The rendered bitmap is then seamlessly embedded into the overall output stream—whether for PDF, HTML, or native ESC/POS. In the case of ESC/POS output, the image is converted into raster format commands that the printer can interpret, effectively "printing" the symbol as an image.

  • Output Formatting and Optimization

The final datastream is optimized for size and compatibility. For ESC/POS devices, this includes compression and command sequencing tailored to the device's feature set.

By offloading the symbol rendering to a controlled, consistent software layer, VirtualESCPOSDevice ensures uniform output across platforms while maximizing compatibility with the widest range of printers. This strategy also simplifies the development process, as developers do not need to handle the complexity of conditional device support or proprietary command sets for individual symbologies.


Specification limits

File size is not limited to a certain size, the header size however must be in the range of 196 to 4096 bytes, given the fact that for the necessary metadata this is absoloutely sufficient.

The actual Application contents are stored in the PK-Format (ZIP), the support for TAR has been dropped before the initial release but might enter at a later point in time.

The encoders (i.e. smpak) are responsible for maintaining proper header size, thus ensuring no malformed header may encoded. The header size limits (FastAccess) have been set to current specifications (2023)

Generation

SignMatic Application Packages can be created using the command line tool smpak (delivered with SignMatic Studio). The application folder requires a valid build information file (example below) to be present in the base directory named "build".

A Single application must contain

  • A valid and unique AppId
  • A 3-level version
  • The Buildfile version
  • The minimum required SignMatic version
  • Name
  • Description
  • Icon
  • Theme Color

This file also represents vaguely the informations provided by each application besides their main archive.

{
	"appId"			: "a4bc7782c208449095bf54d5d495aad9",
	"appVer"		: [1,0,0],
	"bVer"			: 1.0,
	"sMinReq"		: [1,1,7280],
	"appName"		: "Airport",
	"appDescription"	: "This demo features a airport information screen, to display live data of passenger flights on your SignMatic.",
	"vendor"		: "Netroda Technologies",
	"website"		: "https://netroda.com/a/k/products/ess-i/signmatic/demo/",
	"privacyPolicy"		: "https://netroda.com/a/k/products/ess-i/signmatic/privacy",
	"termsOfService"	: "https://netroda.com/a/k/products/ess-i/signmatic/terms",
	"imageIcon64"		: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADYAAAA2CAYAAACMRWrdAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAPRSURBVGhD7ZlLaBNRFIZb67MiCKLgY6VWceNCimIXVUTd2YeCunArRcFHsYjSRVUQpAsftSj43HQl4qMiVXSjoAtBVxYEpYuCCkIVlBicSaLfdP7GpJkk80xTzQc/kzv3nP/cO/dOkkmqKlSoUOG/IJVKNaDryWTyKcdONEtdkxcm0YVSvzOg+YxDrULCAdMZehk51DprTyWXRCJxSGHBodAm9I4tcYVjvU5HAv7nNAdH6L+j0GDgtRGz77atDe0BtJ2X0xUWCnjmXakxiDmtcP/gY03qh22ZC31vUUcsFlusFN/gU3ClLNgx34hbohR/YNCM4vIsCAVHiL2EfG1T8oqulGhRin8o1oYMGbqCeItHaAdNV9uU2KIrZUHcXqUEB7M16LW8PUHeIOpAi2SXA32uVoq4/UoJD3xrMb5ol/AOuSNs1cscs7YpbbcrtU8p0UCB3eiL6vmC/AHTNFs4dutUQYgLf6WciMfjyyj2RHUjhTrRrtR4qFlN0ZN2+Wgo2Uo5QfGt3DtDGkto4BveVya/MIgFTO6WxhQY/NplXR4woAPop8bnGS5OgvyDsisvDMOoZ3BvNFZPkGeg5bIqPxjcbNSLYhqza1i1btmUL0ysX+N1DTnDqHyfkHkQtJ58TY3XE+Q1yaa8YGBdGqMvyA/nITJMuEdOaHy+YWIxFPjZLjSCrlQmbOXy+Cxzu1LEvdTLgnCRrMekatlPDG5XirgjHKZq0EUhbp1KlB63K8XWOqYU60KsJS+prrwQ16uU0kJht/dUelJjcO6M3ZUf/D+hOUoJDmbWw+QFLmoPxxuoD91GD9Bj9By9Uv2CZK5UJnTNxGPQjsoP+buUEgyKtcszDBwnNQa1GhWXF2IeKtwfeNRg0mnbBSffSo2Hmj1KcYT+XxyWKtw7GKxHQ6joTe0CV5OyoJ71hfmD8hyh/7jCvUN+DbL2fZ1pms3Wux26T/s9cvW7InFJtyuVCXlbZOEI47DuxSkKDwcMp1F4JWpFp1A/cvwpgPN3leYZBn9VNo7g3ajQ6KDIPPRZNdMwuPMK8Qzpc/Ectp1yoe+aQqOFQi9UMw3nAv0DQn6TrHKg7ytaqNDooMhN1czE8/01Hnz75JWDYRgbFBYdDOCo6qXhXODfAfGYj3K2OedK822fQttUMw3n9qg7EPjslOUotA+rK3ootgplPfrTblZ3YPC6J8/SPpdR0Ppg/Tg6o79sVndg8K5DbWqWFgpnvTPSblDX5IaJZL0z0l6hrskNE+nQnKxJlfbvnihhMq2a1MT93RMFTGj1P7VSFSpUKEBV1R+M2kmQTyMt+AAAAABJRU5ErkJggg==",
	"color"			: "486ADA"
}123456789101112131415

Support

Support for specific applications is usually carried out by the application vendor, there is a option to reference a URL to the application vendor's product website for help.

Version history

Revision Released Lifecycle Compatibility
1.0.0 08 Feb. 2023 Not announced 1.1.7281+

See also