question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Arabic String not work with thermal printer

See original GitHub issue

I use this function to add Persian text :

.setText("سلام : HELLO")
.setEmphasizedMode(DefaultPrinter.EMPHASIZED_MODE_BOLD) //Bold or normal
.setFontSize(DefaultPrinter.FONT_SIZE_NORMAL)
.setUnderlined(DefaultPrinter.UNDERLINED_MODE_OFF) // Underline on/off
.setCharacterCode(byte) // Character code to support languages
.setLineSpacing(DefaultPrinter.LINE_SPACING_30)
.setNewLinesAfter(1)
printableList.add(printable.build())```

But only some incomprehensible text is printed.

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:6

github_iconTop GitHub Comments

2reactions
ZakariaJawascommented, Nov 28, 2020

@iman2420 Finally I was able to fix this by passing a custom converter, it was already built with the library ArabicConverter() like this .setCustomConverter(ArabicConverter()) It is worth mentioning that CP864 codepage value might be different from printer company to another, CHARCODE_ARABIC_CP864 in the library equals to 0x0E, but with my printer company it was 22 inside their codepage table so you might need to check your printer documentation, then pass the custom character code like this .setCharacterCode(22)

0reactions
ahmedsaber00commented, Mar 1, 2022

جرب كده

public static byte[] POS_Print_Text(String pszString, String encoding, int codepage, int nWidthTimes, int nHeightTimes, int nFontType) {
        if (codepage < 0 || codepage > 255 || pszString == null || pszString.length() < 1) {
            return null;
        }
        try {
            byte[] pbString = pszString.getBytes(encoding);
            Command.GS_ExclamationMark[2] = (byte) (new byte[]{0, 16, 32, 48}[nWidthTimes] + new byte[]{0, 1, 2, 3}[nHeightTimes]);
            Command.ESC_t[2] = (byte) codepage;
            Command.ESC_M[2] = (byte) nFontType;
            if (codepage == 0) {
                return Other.byteArraysToBytes(new byte[][]{Command.GS_ExclamationMark, Command.ESC_t, Command.FS_and, Command.ESC_M, pbString});
            }
            return Other.byteArraysToBytes(new byte[][]{Command.GS_ExclamationMark, Command.ESC_t, Command.FS_dot, Command.ESC_M, pbString});
        } catch (UnsupportedEncodingException e) {
            return null;
        }
    }
printable.add(
            RawPrintable.Builder(
                PrinterCommand.POS_Print_Text(
                    "الأسم:\n",
                    ARABIC, 22, 0, 0, 0
                )
            ).build()
        )
    const val ARABIC = "ISO-8859-6"
Read more comments on GitHub >

github_iconTop Results From Across the Web

C# Thermal Printer Doesn't Print Arabic Characters
Yes i can print from notepad and word Arabic texts. I'm using to print a library called ESCPOS_NET. Well there's your problem, ...
Read more >
ESC/POS thermal printers showing incorrect Arabic characters
My client says it broke the cursive writing style of Arabic and therefore while it might be correct alphabetically, it is still wrong...
Read more >
EOS thermal printer does not print Arabic characters properly ...
Coding example for the question EOS thermal printer does not print Arabic characters properly when using Flutter framework-Flutter.
Read more >
Writing arabic caracters using textstream to receipt printer
Hi, Is there a way to write arabic caracters using textstream to a receipt printer.? I can write arabic caractere using paradox report,...
Read more >
How to print Arabic with Android Printing SDK to ESC/p
First, an Arabic font like Arabs or DOS864 font with codepage 864 or ISO-8859-6 needs to be installed on the printer running ESC/P....
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found