如何在android中打印时更改字体大小?

Nar*_*Pal 9 printing android bluetooth

我通过我的Android手机单元将文本发送到蓝牙打印机.无论是打印机和我的设备通过蓝牙连接. 它工作正常,我在纸上得到了所需的文字.

我的问题是:

打印机采用默认font size的文本.我想更改要打印的文本的字体大小.

我怎么能实现这个?

这是我在bloutooth连接后打印文本的代码:

private void connect_print(BluetoothDevice bluetoothDevicess)  {
    // some code
    printData();
    // some code
}
Run Code Online (Sandbox Code Playgroud)

printData()方法

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;
}
Run Code Online (Sandbox Code Playgroud)

我想更改发送到打印机的文本font sizefont style打印文本.请帮我实现这个目标.如果有人可以建议任何链接,我也会感激他/她. 帮我找到解决这个问题的方法

Leo*_*puy 7

嗨,你写下我对同一主题的回答:

我已经在这个帖子中问了同样的问题,但还没有得到任何答复.只有一个答案,但它没有帮助我.

让我们看看它是否对您有所帮助 这里

如果你已经完成它,那么请在我的帖子中回答我.我一定会感激你的.

现在我知道如何做到这一点,我不得不应用反向ingeneering并从市场反编译.apk,在linux上使用dex2jar,然后使用java反编译器打开jar ...试试这个...当你写这个命令:

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

你正在向方法发送一个byte []数组,你可以在发送真实byte []数组之前修改发送另一个byte []数组的格式...

默认格式byte []数组是这样的:

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

所以你可以试试这个:

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

out.write(format);

out.write(str.getBytes(),0,str.getBytes().length);
Run Code Online (Sandbox Code Playgroud)

这些行我将打印默认格式文本,但是你这样做:

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

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

out.write(format);

out.write(str.getBytes(),0,str.getBytes().length);
Run Code Online (Sandbox Code Playgroud)

它将以粗体样式打印文本...你可以试试这个oter格式数组:

            // 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]));
Run Code Online (Sandbox Code Playgroud)

你可以将它组合起来,然后如果你喜欢小而粗体的文本,请取消注释这些数组对象,例如:

 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);
Run Code Online (Sandbox Code Playgroud)

这最后一个代码打印了最大的文本大小...我希望这可以帮助你...

Pdta:对不起我的英语

Pdta2:我正在尝试打印图像,你知道怎么做?

  • 什么是默认字体大小,以及如何增加字体大小? (2认同)