Skip to content
Python library to manipulate ESC/POS printers
Branch: development
Clone or download
patkan update installation information
INSTALL has been outdated

fixes #357
Latest commit 51d1299 Aug 8, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github add version-strings into the module Jul 17, 2016
capabilities-data @ 8885283 update capabilities-data May 15, 2018
examples First attempt at centering images and QRs (#250) Aug 31, 2017
src/escpos Adding except NotImplementedError for 'detach_kernel_driver' in order… Jun 27, 2019
test improve platform independence (#296) May 14, 2018
.coveragerc Enable branch coverage. Aug 30, 2016
.gitignore disable QR test for image May 13, 2018
.gitmodules Modified submodule to always pull from master branch (#283) May 13, 2018
.mailmap update mailmap Jun 15, 2019
.travis.yml fix allowed failures Jun 16, 2019
AUTHORS Generating AUTHORS Jun 28, 2019
CHANGELOG.rst update changelog Jun 19, 2019
CONTRIBUTING.rst update contributing Aug 8, 2017
INSTALL update installation information Aug 8, 2019
LICENSE change license to MIT Jan 31, 2017 improve package structure with capabilities file Jun 19, 2019
README.rst fix whitespace Jun 4, 2019
codecov.yml remove patch-coverage because we don't use it Mar 23, 2017
readthedocs.yml configure readthedocs with yml Aug 2, 2016
requirements.txt ADD requirements.txt and requirements to Nov 27, 2015
setup.cfg add flake8-checks to travis Jan 30, 2017 improve package structure with capabilities file Jun 19, 2019
tox.ini Toolchain update travis drop py2x (#336) Jun 10, 2019


python-escpos - Python library to manipulate ESC/POS Printers

Continous Integration Code Health Code Coverage Documentation Status


Python ESC/POS is a library which lets the user have access to all those printers handled by ESC/POS commands, as defined by Epson, from a Python application.

The library tries to implement the functions provided by the ESC/POS-commandset and supports sending text, images, barcodes and qr-codes to the printer.

Text can be aligned/justified and fonts can be changed by size, type and weight.

Also, this module handles some hardware functionalities like cutting paper, control characters, printer reset and similar functions.

Since supported commands differ from printer to printer the software tries to automatically apply the right settings for the printer that you set. These settings are handled by escpos-printer-db which is also used in escpos-php.


This library makes use of:

Documentation and Usage

The basic usage is:

from escpos.printer import Usb

""" Seiko Epson Corp. Receipt Printer (EPSON TM-T88III) """
p = Usb(0x04b8, 0x0202, 0, profile="TM-T88III")
p.text("Hello World\n")
p.barcode('1324354657687', 'EAN13', 64, 2, '', '')

Another example based on the Network printer class:

from escpos.printer import Network

kitchen = Network("") #Printer IP Address
kitchen.text("Hello World\n")
kitchen.barcode('1324354657687', 'EAN13', 64, 2, '', '')

The full project-documentation is available on Read the Docs.


This project is open for any contribution! Please see CONTRIBUTING.rst for more information.


None of the vendors cited in this project agree or endorse any of the patterns or implementations. Its names are used only to maintain context.

You can’t perform that action at this time.