Giter Club home page Giter Club logo

escpos-printer-db's Introduction

ESC/POS printer database Build Status

This is a community-maintained database of thermal receipt printer capabilities.

The capability data is shared by multiple open source receipt printing projects, to allow improvements in hardware support, compatibility and localization.

Only features of ESC/POS printers are tracked at this stage. If you have a ZPL, DPL, or ESC/P printer, it is not in-scope for being listed in this database.

Browse

A browsable version of the printer database is hosted here. The single-page app that hosts this data is also open to contributions.

The data/ directory in this repository contains the actual printer data, and is where you should send corrections.

Contribute

This project is open to any kind of contribution, eg.

  • Submitting information about your printer
  • Writing new profiles
  • Typing up legacy code pages

Add your printer

See: How to get your printer included in the database

License

This data and documentation is provided under Creative Commons Attribution 4.0. See LICENSE.md for details.

Participating projects

escpos-printer-db's People

Contributors

andrewshadura avatar belono avatar f-schmidt avatar foaly avatar gagath avatar glogiotatidis avatar katyukha avatar kennylevinsen avatar lufinima avatar m42e avatar mike42 avatar patkan avatar tomaski avatar tuxmaster5000 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

escpos-printer-db's Issues

Port profiles from escpos-php

As an escpos-php user
I want the data in existing profiles to be captured here
So that my printer doesn't stop working when the profile implementation is switched over to use this database

Assume sensible defaults for information that is not collected yet.

  • Default
  • Simple
  • EPOS TEP
  • P822D
  • Star

TM-U220 Paper cut

Hi,

maybe there are models without an automatic paper cut, but my TM-U220 has one. Please update the specs:
"TM-U220": {
....
"paperPartCut": true,

That way it also works with python-escpos.

Regards
Michael

Skeleton profiles for known ESC/POS printers

As an escpos-php user
I want to find printers that are listed as tested in this database (even as placeholders)
So that I can use a named profile and benefit from bugfixes as the profile is populated

Best checklist is straight from the escpos-php README

  • AURES ODP-333
  • AURES ODP-500
  • Bixolon SRP-350III
  • Citizen CBM1000-II
  • Daruma DR800
  • EPOS TEP 220M
  • Epson TM-T88III
  • Epson TM-T88IV
  • Epson TM-T70
  • Epson TM-T82II
  • Epson TM-T20
  • Epson TM-T70II
  • Epson TM-U220
  • Epson FX-890 (requires feedForm() to release paper).
  • Excelvan HOP-E58 (connect through powered hub)
  • Excelvan HOP-E801 (as above)
  • Okipos 80 Plus III
  • P-822D
  • P85A-401 (make unknown)
  • SEYPOS PRP-300 (Also marketed as TYSSO PRP-300)
  • Silicon SP-201 / RP80USE
  • Star TSP-650
  • Star TUP-592
  • Xprinter XP-Q800
  • Zijang NT-58H
  • Zijang ZJ-5870
  • Zijang ZJ-5890T (Marketed as POS 5890T)
  • Zijang ZJ-5890K

GAINSCHA GP-80XXX Series


GP-80XXX:
name: GP-80XXX Series
vendor: GAINSCHA
inherits: simple
notes: GP-80XXX Series printer with 80mm output
features:
barcodeA: true
barcodeB: true
bitImageRaster: true
bitImageColumn: true
graphics: true
qrCode: false
pdf417Code: false
pulseBel: true
paperFullCut: true
paperPartCut: false
colors:
0: black
media:
width:
mm: 80
pixels: Unknown

please help update utf-8 as khmer language support

I got error when i was print utf-8 as khmer language, it wasn't correct spelling I want as "សាកល្បងបោះពុម្ពជាភាសាខ្មែរ" but output as below:

Please help me how to correct this to "សាកល្បងបោះពុម្ពជាភាសាខ្មែរ"

Better documentation for features

Hi,

I’m trying to add profiles for printers I’ve tested, but it’s a bit difficult to figure out what features mean, since some of them seem to be mandatory despite not being used e.g. by python-escpos. E.g. highDensity or starCommands (the latter is probably proprietary commands Star printer support?).

Could you please document them?

Thanks!

Profile for Epson TM-T88IV

This printer is 42 columns in Font A

Code page support is a subset of the default profile, but:

  • South Asia models: 0, 20, 21, 26, 30, 31
  • Others: 0,1, 2, 3, 4, 5, 16, 17, 18, 19, 255

(See also font and page width issues mike42/escpos-php#544)

Epson TM-T20II profile

This printer has a 80mm (default) and 58mm configuration.

Column widths are available from page 94 on the tech reference guide, and code pages may differ from the default profile as well.

Rongta RP326US

  • Appears to support ESC/POS commands
  • Vendor publishes documentation here

Code page list from one of these manuals is:

id name
0 CP437 [U.S.A., Standard Europe]
1 Katakana
2 CP850 [Multilingual]
3 CP860 [Portuguese]
4 CP863 [Canadian-French]
5 CP865 [Nordic]
6 WCP1251 [Cyrillic]
7 CP866 Cyrilliec 2
8 MIK[Cyrillic /Bulgarian]
9 CP755 [East Europe,Latvian 2]
10 Iran
11 reserve
12 reserve
13 reserve
14 reserve
15 CP862 [Hebrew]
16 WCP1252 Latin I
17 WCP1253 [Greek]
18 CP852 [Latina 2]
19 CP858 Multilingual Latin I+Euro)
20 Iran II
21 Latvian
22 CP864 [Arabic]
23 ISO-8859-1 [West Europe]
24 CP737 [Greek]
25 WCP1257 [Baltic]
26 Thai
27 CP720[Arabic]
28 CP855
29 CP857[Turkish]
30 WCP1250[Central Europe]
31 CP775
32 WCP1254[Turkish]
33 WCP1255[Hebrew]
34 WCP1256[Arabic]
35 WCP1258[Vietnam]
36 ISO-8859-2[Latin 2]
37 ISO-8859-3[Latin 3]
38 ISO-8859-4[Baltic]
39 ISO-8859-5[Cyrillic]
40 ISO-8859-6[Arabic]
41 ISO-8859-7[Greek]
42 ISO-8859-8[Hebrew]
43 ISO-8859-9[Turkish]
44 ISO-8859-15 [Latin 3]
45 Thai2
46 CP856
47 CP874

See also mike42/escpos-php#708

Feature to Command mapping

Just a suggestion...

It would be interesting if we could map the commands for common features across various printer models and include these mappings in the printer profile.

Oxhoo AF240 character identification

This POS display has a code page that identifies itself only as "Europe", and prints these characters:

af-240-europe

The code page does not match any that I can find with iconv. I'm tracking this code page in the database as "OXHOO-EUROPEAN", on the assumption that it is vendor-specific.

The task here is to identify each character and fill in the blanks. I got this far defining it:

OXHOO-EUROPEAN:
  name: Oxhoo-specific European
  data:
    - "ÇüéâäàåçêëèïîìÄÅ"
    - "ÉæÆôöòûùÿÖÜñѪº¿"
    - "áíóú¢£¥₧ƒ¡ÃãÕõØø"
    - "·¨°`´½¼×÷≤≥«»≠√¯"
    - "⌠⌡∞◤↵↑↓→←┌┐└┘•®©"
    # Some unidentified chars
    - "™†§¶Γ◢Θ         "
    - "ß   ε           "
    - "τ               "

Add printer to databse Xprinter XP-58

Hi i have problem with Cyrillic on my XPRINTER XP-58 pos printer but my printer is not on database and i tray to add this code to capabilities.json but again not working how to add this printer to database ?
"Xprinter": {
"codePages": {
"0": "PC437",
"1": "Katakana",
"2": "PC580",
"3": "CP860",
"4": "CP863",
"5": "CP865",
"6": "West Europe",
"7": "Greek",
"8": "Hebrew",
"9": "East Europe",
"10": "Iran",
"16": "WCP1252",
"17": "PC866",
"18": "PC852",
"19": "PC858",
"20": "IranII",
"21": "Latvia",
"22": "Arabic",
"23": "PT1511251",
"24": "PC747",
"25": "WPC1257",
"27": "Vietnam",
"28": "PC864",
"29": "PC1001",
"30": "Uigru",
"31": "Hebrew",
"32": "WPC1255",
"255": "Thai"
},
"colors": {
"0": "black"
},
"features": {
"barcodeB": false,
"bitImageColumn": false,
"bitImageRaster": true,
"graphics": false,
"highDensity": true,
"pdf417Code": false,
"pulseBel": false,
"pulseStandard": true,
"qrCode": false,
"starCommands": false
},
"fonts": {
"0": {
"columns": 42,
"name": "Font A"
},
"1": {
"columns": 56,
"name": "Font B"
}
},
"media": {
"width": {
"mm": "Unknown",
"pixels": "Unknown"
}
},
"name": "XP-58",
"notes": "POS-XP58 thermal printer series, also marketed under various other names.\n",
"vendor": "Xprinter"
}

TM T88V profile

Based on a bug report, the character code table in the default profile appears to include code pages which are not present on the TM-T88V.

Review public code page list for this printer, and produce a separate profile with the correct code pages.

Bematech-4200-TH in ESC/POS mode

This is a dual command-set printer, this profile will only apply to printers in the ESC/POS mode.

Code pages-

n page
0 PC437 [U.S.A. and Standard Europe]
2 PC850 [Multilingual]
3 PC860 [Portuguese]
17 PC866 [Cyrillic]
19 PC858 [Multilingual with Euro symbol]
22 PC864 [Arabic]

Features:

  • Column format ESC *
  • Raster format GS v 0
  • 'Graphics' commands apparently supported too.
  • Fonts A and B supported
  • Barcodes supported
  • 2D codes (QR, PDF417) not supported

Not sure of supported media sizes.

TM T88III Feature List incorrect

I have recently attempted to use the QR Code [GS(k] and graphics image [GS(L] on an Epson TM T88III printer. In both cases I sent the data from the unit test testGraphicsBlack and testQRCodeDefaults to the printer. Neither worked, graphics image simply does nothing and the QR code outputs some ASCII fragments of the command.

The Epson programming guide explicitly lists the TM-T88III as not supporting the GS(k and GS(L commands. I therefore believe the feature list for this printer is incorrect.

Kefar KR-306

Printer was bought on aliexpress so not sure the real name of a printer.
Configuration written by self-test of the printer:

---
default:
  name: KR-306
  vendor: Kefar
  notes: >
    Kefar KR-306 printer with 200mm/s speed
  features:
    barcodeA: true
    barcodeB: true
    bitImageRaster: true
    bitImageColumn: true
    graphics: false
    starCommands: false
    qrCode: true
    pdf417Code: true
    highDensity: true
    pulseStandard: true
    pulseBel: false
    paperFullCut: true
    paperPartCut: true
  colors:
    0: black
  fonts:
    0:
      name: Font A
      columns: 48
    1:
      name: Font B
      columns: 64
  media:
    width:
      mm: 72
      pixels: 576
  codePages:
    0: CP437
    # Katakana
    1: Unknown
    2: CP850
    3: CP860
    4: CP863
    5: CP865
    # West Europe
    6: Unknown
    # Greek
    7: Unknown
    # Hebrew
    8: Unknown
    # East Europe
    9: Unknown
    # Iran
    10: Unknown
    # Windows CP-1252
    11: CP1252
    12: PC866
    13: CP852
    14: PC858
    # IranII
    15: Unknown
    # Latvian
    16: Unknown
    # Arabic
    17: Unknown
    # PT1511251
    18: Unknown
    19: CP747
    # WPC1257
    20: Unknown
    # Thai
    21: Unknown
    # Vietnam
    22: Unknown
    23: PC864
    # PC1001
    24: Unknown
    # Uigur
    25: Unknown
    # Hebrew
    26: Unknown
    27: CP1255
    28: CP437
    # Katakana
    29: Unknown
    30: CP437
    31: CP858
    32: CP852
    33: CP860
    34: CP861
    35: CP863
    36: CP865
    37: CP866
    38: CP855
    39: CP857
    40: CP862
    41: CP864
    42: CP737
    43: CP851
    44: CP869
    45: CP928
    46: CP772
    47: CP774
    48: CP874
    # Windows CP-1252
    49: CP1252
    # Windows CP-1250
    50: CP1250
    # Windows CP-1251
    51: CP1251
    52: CP3840
    53: CP3841
    54: CP3843
    55: CP3844
    56: CP3845
    57: CP3846
    58: CP3847
    59: CP3848
    60: CP1001
    61: CP2001
    62: CP3001
    63: CP3002
    64: CP3011
    65: CP3012
    66: CP3021
    67: CP3041
    68: CP852
    69: VISCII
    #Windows CP-1256 (Arabic)
    70: CP1256
...

AP1400/Pipsta family

I have an AP1400 thermal printer manafactured by Able Systems, it's able to do lots of stuff and this is the programming guide
16.-Ap1400-Programmer-Guide.pdf
I'm starting work to make a proper profile for it in python as well as in YAML, but due to how much it deviates from the spec its difficult to list its capabilities. Any help is much appreciates.

Zjiang Zj-5890T profile

This is a very common printer for people starting out with receipt printing, as it is very cheap! It has 58mm width with support for only a few commands.

The simple profile works well, but the test print suggests that the printer has very good code page support that can be added:

2016-09-zj5890-testprint

A manual came with the printer which I haven't found on the manufacturer's site, but may contain more detailed info. ("58MM thermal printer
Programming Manual" / 58MMPrinter Programmer Manual-20150312.pdf)

Transfer to organisation

I'd like to action a suggestion by @patkan at python-escpos/python-escpos#149, to transfer this repository to an organisation. This will help facilitate community maintenance.

I've created an empty organisation which is named so that it could host any community-maintained receipt printing code: https://github.com/receipt-print-hq

Is this name suitable, or would you prefer something else? ('Receipt printer HQ', 'Receipt printers HQ', 'Receipt printing HQ', 'Thermal Printers R Us' etc.)

If there's no other suggestions or objection, I'll transfer this repository to receipt-print-hq around September 7th, 2016.

Add a collation/build script

As a driver developer
I want to download a single YAML or JSON-formattted capabilities database
So that I can get started easily

Collate all input files into one YAML and one JSON output file with a script, and version-control the result.

OCD-100 profile

As in title.

I have documentation for this display on CD, which shows the code pages available- this is otherwise identical to OCD-300.

See also mike42/escpos-php#612

Add Katakana codepage 1

Here's the Katakana code page (codepage 1). This was made by EpsonThis is common in Japan; lines 3-6 are compatible with Shift-JIS but the rest is not.

    katakana:
        - "▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼"
        - "┴┬┤├¯─│▕┌┐└┘╭╮╰╯"
        - " 。「」、・ヲァィゥェォャュョッ"
        - "ーアイウエオカキクケコサシスセソ"
        - "タチツテトナニヌネノハヒフヘホマ"
        - "ミムメモヤユヨラリルレロワン゙゚"
        - "═╞╪╡◢◣◥◤♠♥♦♣●○╱╲"
        - "╳円年月日時分秒〒市区町村人▓\u00A0"

Generate a charmap for all codepages

The DB should include a pre-computed charmap for all codepages where there is a 1-1 Unicode-to-character conversion possible, rather than relying on users to install iconv or python.

ZJ-5870 Thermal Printer

Manufacturer: ZiJiang (but mine is branded AGPtEK, and I have seen others as Esky)
Model: ZJ-5870
I could find no guide online.
Paper Width: 58mm

Based on the test bin files, I conclude:

Bit-Image: yes (without wide or tall)
Graphics: no
Barcode: no
QR-Code: no
PDF417-Code: no
Margins and Spacing: no
Partial Cut: no
Full Cut: no
Underline: light and heavy
Text Width: 1x, 2x, 3x, 4x, 5x, 6x
Text Height: 1x, 2x
Character Encodings: Danish, German, English, Spanish, French
Character Encodings: Irish Gaelic, Hungarian, Icelandic, Russian
Character Encodings: Japanese Katakana Half-width
Character Tables: 0 - CP437, 1 - CP932, 2 - CP850, 3 - CP860, 4 - CP863
Character Tables: 5 - CP865, 16 - CP1252, 17 - CP866, 18 - CP852
I think the Japanese table may not be entirely correct, but it does have the Katakana Half-width.

---
ZJ-5870:
  name: ZJ-5870 Thermal Receipt Printer
  vendor: ZiJiang
  notes: >
      ESC/POS Profile for ZiJiang ZJ-5870 Thermal Receipt Printer,
      which may be branded AGPtEK or Esky,
      and identifies itself as a POS-58 Thermal Printer on selftest.
      This profile is suitable for alphanumberic character mode,
      but is untested on Chinese character mode.
      (Change modes by holding down feed button during power-on
      until the mode LED turns off, then release immediately.)
  features:
    barcodeA: false
    barcodeB: false
    bitImageRaster: true
    bitImageColumn: true
    graphics: false
    starCommands: false
    qrCode: false
    pdf417Code: false
    highDensity: false
    pulseStandard: true
    pulseBel: false
    paperFullCut: false
    paperPartCut: false
  colors:
    0: black
  fonts:
    0:
      name: Font A
      columns: 32
  media:
    width:
      mm: 48
      pixels: 384
  codePages:
    0: CP437
    1: CP932
    2: CP850
    3: CP860
    4: CP863
    5: CP865
    16: CP1252
    17: CP866
    18: CP852
...

Aclas PP7X

New profile: PP7X.
Sold under the brand "ACLAS" and "ESYACLAS"

Has fairly complete ESC/POS support, and includes extensions for use of Chinese characters, and the following code pages (quoting command manual):

n name
0 PC347(U.S.A)
3 PC860(Portuguese)
7* (Spanish)
10 (Iran)
18 PC852 (Latin2)
22 (Arabic)
27 Vietnam
32 WPC1255(Israel)
59 PC866 (Russian)
61 PC857(Turkey)
68* (Armenia)

Track "Barcode A" support

Some printers do not support barcodes at all, but there is no way to flag this.

Disabling A and B would indicate to the driver that it should not attempt barcodes at all (eg, it may decide to use software rendering, or show an error).

Profiles for BIXOLON Printers

Supported commands are documented at:

This covers the following printer models:

  1. Dot matrix printer
    SRP-270
    SRP-275
    SRP-280
  2. 2-inch direct thermal printer
    STP-103
    SRP-350N
    SRP-350plusN
    SRP-352plusN
  3. 3-inch direct thermal printer
    STP-131
    SRP-350
    SRP-350plus
    SRP-352plus
  4. 3-inch Black mark printer
    SRP-350plusV
    SRP-350plusM
  5. 2-inch mobile printer
    SPP-R200
  6. 3-inch inkjet printer
    SRP-500

Feature support is roughly

  • Support bit images in column or raster format, but not graphics
  • Support for QR codes and barcodes varies between models

Code pages:

  • Code pages are listed on page 115, and are the same for all models

In particular, the BIXOLON SRP-270 and BIXOLON SRP-350 are known to be in use by escpos-php users, so these are the best to start with.

Add a new 'dpi' field to include the printer's DPI resolution

Greetings!

We are adding some new features to the python-escpos library that makes use of this great escpos-printer-db capabilities database.
One of this new features will be the ability to match the sizes of hardware and software-generated bar-codes by rendering bar-code images of the same resolution as the printer's native resolution, but in order to make the appropriate calculations we previously need to know the printer’s DPI value that varies between the different models.

Our request is that a new field named dpi would be added into the media group of the profiles to include the DPI resolution of the listed printers so this information can be fetched by any client.
The idea is that the default.yml profile would contain the inheritable media: dpi: Unknown items, so that each profile can be overloaded with the right value when known.

I’d be glad to start a PR with the necessary changes, as soon as I have the time, if you agree with this proposal.

Thanks in advance.

Commands

Why did you decide to not include the commands?

Resources for Inferring CodePages?

Hi folks, thanks for creating this invaluable resource.

I've bought what appears to be a whitelabel version of the "Welquic" printer from this article - it is visually identical except it lacks the "Welquic" brand. I have it working, mostly, using python-escpos.

I am having character encoding issues for common characters like áéíóú so I believe I need to create a profile that maps code pages. The printer helpfully prints out a debug page mapping codes to codepages, but not all are given actual codepage names, just occult titles like "(Katakana)". Yes, this is the exact issue that Mike wrote this article about. I have translated that into bad Python as the following, and for the "(Katakana)" page it returns the same results as Mike's example in the blog post.

# p = printer

foo = b'\x1b@\x1bt' + b'\x01' + b'\x1bE\x01Code page 1\x1bE\x00\n' + b'\x1bE\x01  0123456789ABCDEF0123456789ABCDEF\x1bE\x00\n' 

chars = bytearray(128) 
for i in range(128): 
    chars[i] = i + 128 

for y in range(0,4): 
    row = b' ' 
    rowHeader = b"\x1bE\x01" + [b'8', b'A', b'C', b'E'][y] + b"\x1bE\x00" 
    row = chars[(y*32) : ((y*32) + 32)] 
    foo += rowHeader + b' ' + row + b'\n' 

p._raw(foo)
p.cut()

So my question is: Given the ability to instruct the printer to print codepages with names like "(Vietnam)", how do I go from this to an official codepage name that I can put into a profile for the ESC/POS Printer DB for this printer model? Only some of the codepages are documented on Wikipedia, even assuming that I could wade through candidate codepage names to find a match by brute force.

There are a few tens of codepages for this printer so I don't think I'm likely to document them all, but I'd like to be as helpful as possible all the same.

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.