Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change the font size while printing in android?

I am sending the text to the bluetooth printer via my android cell. Both the printer and my device are connected via the bluetooth. It's Working fine and I am getting the desired text on the paper.

My question is:

The printer is taking the default font size of the text. I want to change the font size of the text which is to be printed.

How can i achieve this??

Here is my code of printing the text after the bloutooth connectivity:

private void connect_print(BluetoothDevice bluetoothDevicess)  {
    // some code
    printData();
    // some code
}

The printData() method

private void printData() {
    // TODO Auto-generated method stub
    String str = new String("This is the text sending to the printer");
    String newline = "\n";
    try {
        out.write(str.getBytes(),0,str.getBytes().length);
        Log.i("Log", "One line printed");
    } catch (IOException e) {
        Toast.makeText(BluetoothDemo.this, "catch 1", Toast.LENGTH_LONG).show();
        e.printStackTrace();
        Log.i("Log", "unable to write ");
        flagCheck = false;
    }
    try {
        out.write(newline.getBytes(),0,newline.getBytes().length);
    } catch (IOException e) {        
        Log.i("Log", "Unable to write the new line::");
        e.printStackTrace();
        flagCheck = false;
    }
    flagCheck = true;
}

I want to change the font size and the font style of the text which is sending to the printer to print. Please help me to achieve this. If anyone can suggest any link then too i will appreciate him/her. Help me to find the solution to this problem

like image 811
Narendra Pal Avatar asked Sep 04 '12 05:09

Narendra Pal


1 Answers

Hi you write on my answer of the same theme this:

I have already asked the same question in this thread HERE, but didnt yet got any response. Got only one answer but it was not helped me.

Let see whether it help you. HERE

If you have done with it then please answer me in my thread. I will definitely appreciate you.

Now I konw how to do it, i had to apply reverse ingeneering and decompile an .apk from the market, using dex2jar on linux and next opening jar with java decompiler... Try this... when u write this command:

out.write(str.getBytes(),0,str.getBytes().length);

U are sending to the method an byte[] array, u can modify format sending another byte[] array before send the real byte[] array...

The default format byte[] array is this:

byte[] arrayOfByte1 = { 27, 33, 0 };

So u can try this:

byte[] format = { 27, 33, 0 };

out.write(format);

out.write(str.getBytes(),0,str.getBytes().length);

These lines i'll print u the default format text, but uf u do it:

 byte[] format = { 27, 33, 0 };

format[2] = ((byte)(0x8 | arrayOfByte1[2]));

out.write(format);

out.write(str.getBytes(),0,str.getBytes().length);

It will print text in bold style... U can try this oter format arrays:

            // Bold
            format[2] = ((byte)(0x8 | arrayOfByte1[2]));

            // Height
            format[2] = ((byte)(0x10 | arrayOfByte1[2]));

            // Width
            format[2] = ((byte) (0x20 | arrayOfByte1[2]));

            // Underline
            format[2] = ((byte)(0x80 | arrayOfByte1[2]));

            // Small
            format[2] = ((byte)(0x1 | arrayOfByte1[2]));

Too u can combine it, then if u like little and bold text, uncomment these array asignements, for example:

 byte[] format = { 27, 33, 0 };

    // Bold
format[2] = ((byte)(0x8 | arrayOfByte1[2]));
// Height
format[2] = ((byte)(0x10 | arrayOfByte1[2]));
// Width
format[2] = ((byte) (0x20 | arrayOfByte1[2]));
// Underline
// format[2] = ((byte)(0x80 | arrayOfByte1[2]));
// Small
// format[2] = ((byte)(0x1 | arrayOfByte1[2]));
    out.write(format);
    out.write(str.getBytes(),0,str.getBytes().length);

This last code prints que biggest text size... I hope this can helps u...

Pdta: sorry for my english

Pdta2: I'm trying to print images, u know how??

like image 109
Leonardo Sapuy Avatar answered Sep 22 '22 03:09

Leonardo Sapuy