Python SDK for Star TSP100 Graphic Mode thermal printers
Project description
py-star-tsp
Python SDK for Star thermal printers operating in Graphic Mode over USB.
Following the STAR Graphic Mode Command Specifications Rev. 2.31.
Supported Models
| Model | Interface | Tested |
|---|---|---|
| TSP100U | USB | - |
| TSP100PU | USB + Parallel | - |
| TSP100GT | USB + Ethernet | - |
| TSP100LAN | Ethernet | - |
| TSP100IIU | USB | Y |
| TSP100IIIW | USB + Wi-Fi | - |
| TSP100IIILAN | USB + Ethernet | - |
| TSP100IIIBI | USB + Bluetooth | - |
| TSP100IIIU | USB | - |
Installation
pip install py-star-tsp
Usage examples
Reference page
README: examples/README.md
Regular usage
import datetime
import py_star_tsp
with py_star_tsp.StarTSP100() as printer:
# Changing print speed to slow
printer.print_speed = 2
# Changing print quality to high
printer.raster_print_quality = 2
# Device discovery
printer.find_device()
# Preparing timestamp label
timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# Preparing content
title = "Before Flying Circus"
paragraph = """Jones and Palin met at Oxford University, where they performed togethe
r with the Oxford Revue. Chapman and Cleese met at Cambridge Universit
y. Idle was also at Cambridge, but started a year after Chapman and Cl
eese. Cleese met Gilliam in New York City while on tour with the Cambr
idge University Footlights revue Cambridge Circus (originally entitled
A Clump of Plinths). Chapman, Cleese, and Idle were members of the Fo
otlights, which at that time also included the future Goodies (Tim Bro
oke-Taylor, Bill Oddie, and Graeme Garden), and Jonathan Lynn (co-writ
er of Yes Minister and Yes, Prime Minister).[12] During Idle's preside
ncy of the club, feminist writer Germaine Greer and broadcaster Clive
James were members. Recordings of Footlights' revues (called "Smokers"
) at Pembroke College include sketches and performances by Cleese and
Idle, which, along with tapes of Idle's performances in some of the dr
ama society's theatrical productions, are kept in the archives of the
Pembroke Players.
"""
# Adding content to the printing "queue"
printer.add_text(timestamp, font_size=30, invert=True)
printer.add_bar(width=0, height=15)
printer.add_image(py_star_tsp.KITTENS_SPINNING)
printer.add_bar(width=0, height=15)
printer.add_text(title, font_size=50)
printer.add_bar(width=0, height=15)
printer.add_text(paragraph, font_size=20)
printer.add_image(py_star_tsp.KITTENS_SPINNING, invert=True)
# Exporting a preview
printer.save_rendered("/tmp/rendered_example.bmp")
# Printing out
printer.print()
Print separately prepared raster
import datetime
import PIL
import py_star_tsp
with py_star_tsp.StarTSP100() as printer:
# Changing print quality to high
printer.raster_print_quality = 2
# Device discovery
printer.find_device()
# Create your own image
your_image = Image.new("L", (100, 200), color=255)
draw = ImageDraw.Draw(your_image)
draw.multiline_text((10, 10), "HELLO THERE.", fill=0)
# Initialise RasterImage object
raster_image = RasterImage(image=your_image)
# Add RasterImage object to the printing "queue"
printer.add_raster(raster=raster_image)
# Exporting a preview
printer.save_rendered("/tmp/rendered_example.bmp")
# Printing out
printer.print()
Linux USB Access (udev rule)
By default, USB devices are accessible only to root. Add the following udev rule to grant access to all users in the plugdev group:
# /etc/udev/rules.d/99-star-tsp100.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="0519", MODE="0666", GROUP="plugdev"
Reload rules and reconnect the printer:
sudo udevadm control --reload-rules
sudo udevadm trigger
Add your user to the plugdev group if necessary:
sudo usermod -aG plugdev $USER
Font Discovery and Fallback
The text renderer automatically scans standard OS directories for
.ttf and .otf fonts:
| OS | Search paths |
|---|---|
| Linux | /usr/share/fonts, /usr/local/share/fonts, ~/.local/share/fonts, ~/.fonts |
| macOS | /System/Library/Fonts, /Library/Fonts, ~/Library/Fonts |
| Windows | %WINDIR%\Fonts |
You can also set the FONTPATH environment variable to add custom directories
(separated by os.pathsep).
Fallback font order
When no specific font is requested, the following are tried in order:
- DejaVu Sans Mono
- Liberation Mono
- FreeMono
- Arial
- Consolas
- Courier New
If no TrueType/OpenType fonts are found at all, Pillow's built-in bitmap font is used. This bitmap font does not support sizing, bold, italic, or underline — a warning is logged.
Font source packages
Install these Python/system packages to ensure fonts are available:
- matplotlib — ships DejaVu Sans / DejaVu Sans Mono
- fonttools — useful for font metadata inspection
- fonts-dejavu (Debian/Ubuntu) / dejavu-sans-mono-fonts (Fedora/Rocky) — DejaVu family
- fonts-liberation (Debian/Ubuntu) / liberation-mono-fonts (Fedora/Rocky) — Liberation family
Preview / Export
You can save the queued raster output to an image file before sending it to the printer.
from py_star_tsp import StarTSP
printer = StarTSP()
printer.add_text("Preview me")
printer.add_bar(width=576, height=8)
printer.save_rendered("preview.bmp")
printer.save_rendered("preview.jpg", quality=95)
image = printer.render_image()
print(image.size)
Use BMP if you want an exact 1-bit preview of what will be sent to the printer. JPEG is supported too, but it is exported as grayscale because JPEG does not support 1-bit images.
ESC/POS Compatibility
At this point emulation of ESC/POS is not implemented.
See issue #13: https://github.com/printer-stream/py-star-tsp/issues/13
Licensing
- Kitten in the demos by Deni Sudibyo
TODO
- 2d code implementation (barcode, qr, etc)
- Python version compatibility
- ESC/POS compatibility (very long term)
- DONE: Usage with external rendering (just printing ready to use raster)
- DONE: Turn demo to a reference sheet
- DONE: Generate a preview of what's rendered to be printed
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_star_tsp-1.6.6.tar.gz.
File metadata
- Download URL: py_star_tsp-1.6.6.tar.gz
- Upload date:
- Size: 555.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ab2299b43f57be362d51c7409b105205d4deb6ae0b6bc55c1c73c3609ff91a1
|
|
| MD5 |
59d3ea976ec917fda62ee656cbf64238
|
|
| BLAKE2b-256 |
a9ba60997cd1b8f3b1262d12e339ed05e2a9411e1bdc9a62093ac516cf592e36
|
Provenance
The following attestation bundles were made for py_star_tsp-1.6.6.tar.gz:
Publisher:
release.yml on printer-stream/py-star-tsp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
py_star_tsp-1.6.6.tar.gz -
Subject digest:
9ab2299b43f57be362d51c7409b105205d4deb6ae0b6bc55c1c73c3609ff91a1 - Sigstore transparency entry: 1356202314
- Sigstore integration time:
-
Permalink:
printer-stream/py-star-tsp@056d392c5cb281e9cca6ca5675e588b067bd1d55 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/printer-stream
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@056d392c5cb281e9cca6ca5675e588b067bd1d55 -
Trigger Event:
push
-
Statement type:
File details
Details for the file py_star_tsp-1.6.6-py3-none-any.whl.
File metadata
- Download URL: py_star_tsp-1.6.6-py3-none-any.whl
- Upload date:
- Size: 547.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa0618a1d9f822a59d367aecc047416238cf0b9e89e710144da98d5c639b1c85
|
|
| MD5 |
b89791fd7478cef1cf164015a8c8d197
|
|
| BLAKE2b-256 |
5ab22096f1c08f713129bd036322e15573945323bb06872135cf58cdae626537
|
Provenance
The following attestation bundles were made for py_star_tsp-1.6.6-py3-none-any.whl:
Publisher:
release.yml on printer-stream/py-star-tsp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
py_star_tsp-1.6.6-py3-none-any.whl -
Subject digest:
aa0618a1d9f822a59d367aecc047416238cf0b9e89e710144da98d5c639b1c85 - Sigstore transparency entry: 1356202391
- Sigstore integration time:
-
Permalink:
printer-stream/py-star-tsp@056d392c5cb281e9cca6ca5675e588b067bd1d55 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/printer-stream
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@056d392c5cb281e9cca6ca5675e588b067bd1d55 -
Trigger Event:
push
-
Statement type: