Skip to main content

Drivers and templates for thermal printers

Project description

Build Status Coverage

Python library for communicating with line-mode thermal printers. Currently works only with printers that support the star line mode protocol but adding support for other similar printers should be possible.

Also provides a module for compiling an xml description of a page to a list of commands.

Developed at Newman Online Ltd and open sourced with permission.

Examples

Basic, without template system:

from linemode import open_printer

printer = open_printer('star+lpt:///dev/usb/lp0')

printer.run_commands([
    ('fontsize-large'),
    ('select-bold'),
    ('write', "Hello world\n"),
    ('cut-through'),
])

Running templates:

from linemode import open_printer
from linemode.renderers import xml

printer = open_printer('star+lpt:///dev/usb/lp0')

printer.run_commands(xml.render("""
<document>
  <line>
    <bold>Hello world</bold>
  </line>
</document>
"""))

With jinja:

from jinja2 import Template

from linemode import open_printer
from linemode.renderers import xml

printer = open_printer('star+lpt:///dev/usb/lp0')

# jinja2 template
template = """
<document>
  {% for potatoes in [1, 2, 3, 4] %}
  <line>
    {{ potatoes }} potato
  </line>
  {% endfor %}
</document>
"""
# line mode printer document
document = Template(template).render()

# iterator of generic printer instructions
commands = xml.render(document)

# printer specific compiled representation
program = printer.compile(commands)

printer.execute(program)

Command Language

Printer drivers accept an iterable of command tuples. Tuples should contain a command name followed by any number of primitive arguments. For convenience, a tuple containing just a command name can be replaced with the command name.

The following commands are supported:

reset

Reset everything to it’s initial state.

select-bold/cancel-bold

Toggle printing bold text.

select-highlight/cancel-highlight

Toggle printing white on black instead of black on white.

fontsize-small/fontsize-medium/fontsize-large

Set the line height for the current line and all following lines. If not sent at the beginning of a new line then behaviour is undefined. Characters should remain the same width.

Default: fontsize-small

write <string>

Print the contents of a unicode string. If any characters are unsupported, they will be replaced with ‘?’.

barcode <style> <data>

TODO

newline

Flush the line buffer and start a new line.

cut-through

Create a cut at the next mark

cut-partial

Create a perforated cut at the next mark

cut-through-immediate

Create a cut at the current cursor position

cut-partial-immediate

Create a perforated cut at the current cursor position

Bugs

Please post any problems or feature requests using the issue tracker. Pull requests welcome. New drivers would be greatly appreciated.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

linemode-0.4.0.tar.gz (10.5 kB view details)

Uploaded Source

File details

Details for the file linemode-0.4.0.tar.gz.

File metadata

  • Download URL: linemode-0.4.0.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for linemode-0.4.0.tar.gz
Algorithm Hash digest
SHA256 a8375c8694fa96f919b32b33029d22f98ba1685cc64310e85b771fa1dfce8084
MD5 b818644bfcc7ebe850888e4f632f95a7
BLAKE2b-256 1ddb5b4e327cbeee1d6c91b1763306912a2cb7995c370d39cf6c9dc6f72aec02

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page