Difference between revisions of "VirtualESCPOSDevice"

Line 68: Line 68:
  
 
== Overview ==
 
== Overview ==
SignMatic Application Packages are encoded file archives with a variable size header, encoded bitmap image of the Application icon and various metadata. The files are opened by the system utility smdepak (console application) or smdepakw (User Interface), that performs various compatibility checks including versioning, downgrade and upgrade options as well as the actuall unpacking and registration of the application to the signmatic applications directory. The File structure is published openly and is extended from the
+
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.
NEFastAccess-VarH Format, that encodes archived files (ZIP or TAR) with a variable sized header. The Header size is limited only by the definitive implementation of the format structure, and must not change between compatibility layers.
+
 
 +
VirtualESCPOSDevice supports all common barcode and QR code symbologies, ensuring consistent output regardless of the specific capabilities of the connected printing hardware.
  
 
== Technical ==
 
== Technical ==
The File consists of the magic sequence <span style="font-family:monospace;">0x16 0x0F 0x17 0x1B</span> followed by literal <span style="font-family:monospace;">SignMatic</span> The Relatively small header is encoded with NEFastAccess-LOffset header format (2 bytes prefix, shift n, 2 bytes suffix), and followed by the archive. The architecture is similar to other common application archives like the Chromium PAK format, Android packages (APK) and Java archives (JAR).
+
 
 +
'' 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 ====
 
==== Specification limits ====

Revision as of 15:10, 20 April 2025

VirtualESCPOSDevice

Virtual ESC/POS Device

Developer Netroda Technologies
Type Device Library
Purpose Receipt generation
Printing
Receipt conversion
Current Version 1.5.0 (20 Apr. 2025)
Platform Extensible Services / Server
Derived from
  • ES/S-B LPR Printer Drivers
    • ↳ ES/S-B Native LPR Drivers


VirtualESCPOSDevice 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.

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