2012-09-04 47 views
6

我正在通過我的android單元格發送文本到藍牙打印機。 打印機和我的設備都通過藍牙連接。 它工作正常,我得到所需的文字在紙上。如何在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

請給我建議我在這種情況下應該怎麼做? –

+0

有人可以告訴我我在這裏必須做什麼 –

+0

還沒有得到任何回答 –

回答

5

嗨,你寫我對這個相同主題的回答:

我已經在此線程中提出了同樣的問題,但沒有 尚未得到任何迴應。只有一個答案,但它沒有幫助我。

看看它是否對你有幫助。這裏

如果你已經完成了它,那麼請在我的線程回答我。我會 絕對感謝你。

現在我知道如何做到這一點,我不得不運用反向ingeneering,並從市場反編譯的apk文件,使用dex2jar在Linux和下一次打開罐子與Java反編譯......請嘗試......當ü寫此命令:

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

U的發送到所述方法的字節[]數組中,u可以修改格式發送另一byte []數組之前發送的實際字節[]數組。 ..

默認格式byte []數組是這樣的:

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

所以U可以嘗試:

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

out.write(format); 

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

這些利未列名我會打印U中的默認格式文本,但UFü做到這一點:

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

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

out.write(format); 

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

它將打印大膽風格的文字... U可以試試這個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])); 

太如果u像小和大膽的文字,取消這些陣列asignements,例如u能結合起來,則:

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:我試圖打印圖像,你知道怎麼做?

+0

讓我檢查隊友 –

+0

這似乎是對我來說的解決方案。謝謝,感激。 –

+0

嗨Narendra,非常感謝你的代碼,我已經花了兩天時間嘗試按照現有的手冊格式化一些文本,但沒有成功。例如,我遇到了一個與此相關的問題:根據您的建議激活BOLD模式,然後我寫一行,然後回到默認樣式,然後再寫一行。 打印機將只考慮發送的最後一個參數(即默認樣式)來編寫所有內容。你也有這個問題嗎? – user997593

0

我不知道,但ü可以用java跨度的方法實現這一目標的設置字體樣式嘗試這樣

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);

類似U可以應用字體樣式,字體顏色等....

的詳細檢查這個問題

Android Development: How To Replace Part of an EditText with a Spannable

How to use SpannableString with Regex in android?

+0

+1給出的線索。讓我試試這個。 –

+0

Sory,但這不是我的問題的解決方案。無論如何謝謝你的興趣。 –

+1

嗯嗯比downvote PLZ我不配得到+1 – Aamirkhan

相關問題