2012-09-04 21 views
6

Estoy enviando el texto a la impresora bluetooth a través de mi celular Android. Tanto la impresora como mi dispositivo están conectados a través del bluetooth. Funciona bien y obtengo el texto deseado en el papel.¿Cómo cambiar el tamaño de fuente al imprimir en android?

Mi pregunta es:

La impresora está llevando el predeterminado font size del texto. Quiero cambiar el tamaño de la fuente del texto que se va a imprimir.

¿Cómo puedo lograr esto?

Aquí está mi código de imprimir el texto después de la conectividad bloutooth:

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

El método 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; 
} 

quiero cambiar el font size y la font style del texto que está enviando a la impresora para imprimir. Ayúdenme a lograr esto. Si alguien puede sugerir cualquier enlace, también lo agradeceré. Ayúdame a encontrar la solución a este problema

+0

por favor sugiérame qué debo hacer en esta situación? –

+0

¿Alguien me puede decir lo que tengo que hacer aquí? –

+0

Todavía no tengo ninguna respuesta de este –

Respuesta

5

Hola escribe en ella mi respuesta del mismo tema esta:

Ya he hecho la misma pregunta en este hilo AQUÍ, pero no he encontrado todavía tengo alguna respuesta. Tengo solo una respuesta, pero no me ayudó.

A ver si te sirve de ayuda. AQUÍ

Si ya lo ha hecho, por favor respóndame en mi hilo. Voy a definitivamente te aprecio.

Ahora konw cómo hacerlo, tuve que aplicar Ingeneering inversa y descompilar un apk del mercado, utilizando dex2jar en Linux y el próximo frasco de apertura con decompilador java ... Prueba esto ... cuando u escribir este comando:

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

T están enviando al método de un [] matriz de bytes, u puede modificar el formato de enviar otro byte [] array antes de enviar el [] matriz de bytes real. ..

El byte de formato por defecto [] matriz es la siguiente:

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

Así que u puede intentar esto:

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

out.write(format); 

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

Estos li nes Imprimiré u el texto formato por defecto, pero UF u hacer es:

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

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

out.write(format); 

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

se imprimirá el texto en negrita ... U puede probar este formato: oter matrices

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

Demasiado u puede combinar, entonces si te gusta poco y negrita texto, descomentar estas asignements de matriz, por ejemplo:

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

impresiones este último código que el tamaño del texto más grande ... espero que esto ayuda lata u ...

PDTA: lo siento por mi Inglés

Pdta2: Estoy tratando de imprimir imágenes, u saber cómo ??

+0

déjame revisar mate –

+0

Parece la solución para mí. gracias, apreciado –

+0

Hola Narendra, muchas gracias por tu código, he estado tratando de formatear un texto durante dos días siguiendo los manuales existentes y no funcionó. Tengo un problema relacionado con esto, por ejemplo: activo el modo BOLD siguiendo su sugerencia, luego escribo una línea, luego vuelvo al estilo predeterminado y escribo otra línea. La impresora escribirá todo simplemente teniendo en cuenta el último parámetro enviado, que es el estilo predeterminado. ¿Tuviste este problema también? – user997593

0

no estoy seguro, pero u puede achive esto con el método lapso de Java para la creación de estilo de fuente tratar como esto

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

de manera similar u puede aplicar el estilo de fuente, color de fuente, etc ....

para más detalles consultar este tema

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

How to use SpannableString with Regex in android?

+0

+1 por dar la pista. Déjame probar esto. –

+0

Sory, pero esta no es la solución de mi pregunta. De todos modos, gracias por su interés. –

+1

hmmm que downvote por favor, no merezco +1 – Aamirkhan

Cuestiones relacionadas