我通过我的Android手机单元将文本发送到蓝牙打印机。 打印机和我的设备都通过蓝牙连接。 它工作正常,我在纸上得到了所需的文字。
我的问题是:
打印机正在使用文本的默认 font size
。我想更改要打印的文本的字体大小。
我怎样才能实现这个目标?
以下是我在bloutooth连接后打印文本的代码:
private void connect_print(BluetoothDevice bluetoothDevicess) {
// some code
printData();
// some code
}
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;
}
我想更改发送到打印机的文本的font size
和font style
进行打印。
请帮我实现这个目标。
如果有人可以建议任何链接,我也会感激他/她。
帮我找到解决此问题的方法
答案 0 :(得分:7)
嗨,你写下我对同一主题的回答:
我已经在这个帖子中问了同样的问题,但没有 但有任何回应。只有一个答案,但它没有帮助我。
让我们看看它是否对您有所帮助。该处
如果你已经完成了它,请在我的帖子中回答我。我会 非常感谢你。
现在我知道怎么做了,我不得不在市场上应用反向生成和反编译.apk,在linux上使用dex2jar,然后用java反编译器打开jar ...尝试这个...当你写下这个命令:
out.write(str.getBytes(),0,str.getBytes().length);
U正在向方法发送一个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);
这些行我将打印默认格式文本,但是你这样做:
byte[] format = { 27, 33, 0 };
format[2] = ((byte)(0x8 | arrayOfByte1[2]));
out.write(format);
out.write(str.getBytes(),0,str.getBytes().length);
它将以粗体样式打印文本... U可以尝试这种格式数组:
// 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]));
你可以将它组合起来,然后如果你喜欢小而粗体的文本,请取消注释这些数组的对象,例如:
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);
这最后一个代码打印了最大的文本大小...我希望这可以帮助你......
Pdta:对不起我的英文
Pdta2:我正在尝试打印图像,你知道怎么做?
答案 1 :(得分:0)
我不确定,但您可以使用Java span
方法来设置字体样式。
尝试这样的事情:
int start=editbox.getSelectionStart();
int end=editbox.getSelectionEnd();
Spannable span=(Spannable)editbox.getText();
StyleSpan f = new StyleSpan(
Typeface.createFromAsset(getAssets(),
"fonts/genbkbasr.ttf"));
span.setSpan(f, start,end, 0);
同样,您可以应用字体样式,字体颜色等......
有关详细信息,请查看以下内容:
Android Development: How To Replace Part of an EditText with a Spannable