2015-11-10 2 views
1

У меня возникла проблема с печатью активов png на принтер zebra imz220, который будет использоваться для печати квитанций на планшете Android, и логотип должен быть напечатан в верхней части распечатать. при печати изображения я получаю строковый вывод вместо изображения. Я пробовал следующий StackOverflow пост я не могу показаться, чтобы найти какую-либо документацию о том, как это сделать - print image via bluetooth printer prints stringprint png с zebra imz220 - android

package com.example.gareth.myzebraprinter; 

import android.content.res.AssetManager; 
import android.content.res.Resources; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.drawable.BitmapDrawable; 
import android.graphics.drawable.Drawable; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 

import com.zebra.sdk.comm.BluetoothConnection; 
import com.zebra.sdk.comm.Connection; 
import com.zebra.sdk.comm.ConnectionException; 
import com.zebra.sdk.graphics.ZebraImageFactory; 
import com.zebra.sdk.graphics.ZebraImageI; 
import com.zebra.sdk.printer.PrinterLanguage; 
import com.zebra.sdk.printer.ZebraPrinter; 
import com.zebra.sdk.printer.ZebraPrinterFactory; 
import com.zebra.sdk.printer.ZebraPrinterLanguageUnknownException; 
import com.zebra.sdk.util.internal.Base64; 

import java.io.ByteArrayOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 

public class MainActivity extends AppCompatActivity { 

    private ZebraPrinter zebraPrinter; 
    private Connection connection; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     connect(); 
     printTest(); 
    } 

    private void printTest(){ 

     if(zebraPrinter != null){ 

      try { 
       InputStream inputStream = getAssets().open("ic_launcher.png"); 
       ZebraImageI zebraImageI = ZebraImageFactory.getImage(BitmapFactory.decodeStream(inputStream)); 
       zebraPrinter.printImage(zebraImageI,250,0,0,-1,false); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } catch (ConnectionException e) { 
       e.printStackTrace(); 
      } 

//   byte[] rcpt = "------------\n\r test test test".getBytes(); 
//   try { 
//    connection.write(rcpt); 
//   } catch (ConnectionException e) { 
//    Log.e("printTest",e.getMessage()); 
//   } 
     } 
    } 

    private void connect(){ 


     connection = new BluetoothConnection("AC3FA41EF22E"); 

     try 
     { 
      connection.open(); 
     } 
     catch (ConnectionException ex) 
     { 
      Log.e("connect","ConnectionException " + ex.getMessage()); 
      mSleeper.sleep(1000); 
      closeConnection(); 
     } 
     catch(Exception ex) 
     { 
      Log.e("connect","Exception "+ex.getMessage()); 
     } 

     try 
     { 
      zebraPrinter = ZebraPrinterFactory.getInstance(connection); 
      PrinterLanguage pl = zebraPrinter.getPrinterControlLanguage(); 
      Log.i("PrinterPanguage",pl.toString()); 
     } 
     catch (ConnectionException ex) 
     { 
      Log.e("connect","ConnectionException " + ex.getMessage()); 
      zebraPrinter = null; 
      mSleeper.sleep(1000); 
      closeConnection(); 
     } catch(Exception ex) 
     { 
      Log.e("connect","Exception " + ex.getMessage()); 
      zebraPrinter = null; 
      mSleeper.sleep(1000); 
      closeConnection(); 
     } 
    } 

    private void closeConnection(){ 

     if(connection != null){ 
      try 
      { 
       connection.close(); 
      } 
      catch (ConnectionException exx) 
      { 
       Log.e("closeConnection", exx.getMessage()); 
      } 
     } 
    } 
} 

ответ

0

я вывожу на печать на код ниже в принтер Zebra RW420

Connection connection = new BluetoothConnection("MAC_ADDRESS_HERE"); 
connection.open(); 

//reset margin 
//ref https://km.zebra.com/kb/index?page=forums&topic=021407fb4efb3012e55595f77007e8a 
connection.write("! U1 JOURNAL\r\n! U1 SETFF 100 2\r\n".getBytes()); 

Bitmap bitmapToPrint = /*GET_YOUR_BITMAP*/ 
ZebraPrinter printer = ZebraPrinterFactory.getInstance(connection); 
ZebraImageAndroid zebraImageToPrint = new ZebraImageAndroid(bitmapToPrint); 
printer.printImage(zebraImageToPrint, 0, 0, -1, -1, false); 

Проверьте вас способ печати, используйте -1 -1 по ширине и высоте параметров его поддерживать первоначальную ширину и высоту битовой карты

0

Там еще один способ:

if(conZebra.isConnected()) { 
    int widthOfImageInBytes = (bitmap.getWidth() + 7)/8; 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    baos.write(("! 0 200 200 " 
       + bitmap.getHeight() 
       + " 1\r\nCG " 
       + String.valueOf(widthOfImageInBytes) 
       + String.valueOf(" ") 
       + String.valueOf(bitmap.getHeight()) 
       + String.valueOf(" ") 
       + String.valueOf(0) 
       + String.valueOf(" ") 
       + String.valueOf(0) 
       + String.valueOf(" ")).getBytes()); 
    conZebra.write(baos.toByteArray()); 
    OutputStream compressedBitmapOutputStreamCpcl = new CompressedBitmapOutputStreamCpcl(conZebra); 
    DitheredImageProvider.getDitheredImage(bitmap, compressedBitmapOutputStreamCpcl); 
    compressedBitmapOutputStreamCpcl.close(); 
    conZebra.write("\r\nFORM\r\nPRINT\r\n".getBytes()); 
    //printer.getGraphicsUtil().printImage(bitmap, 0, 0, -1, -1, false); 
    Utils.DebugLog(Utils.TAG_PRINTERMODULE, "Bitmap enviado..."); 
} else { 
    Utils.DebugLog(Utils.TAG_PRINTERMODULE, "La impresora no est� conectada, imprimirBitmap() fall�"); 
} 
Смежные вопросы