2016-04-08 6 views
1

こんにちは、私はAndroid 4.4.2テーブルから領収書をZicoxサーマルレシートプリンタに印刷しようとしています。私はこれまでのテキストを印刷することができましたが、今私はさらに進んで、バーコード/ qrcodesを印刷する必要があります。残念なことに、これは私の知識を超えたものです。私は解決策を探っていて、まだ私を見つけていません。受領時に生成されたバーコード/ QRコード

これらは私が私のバーコードを生成するために使用するメソッドです:

/************************************************************** 
    * getting from com.google.zxing.client.android.encode.QRCodeEncoder 
    * 
    * See the sites below 
    * http://code.google.com/p/zxing/ 
    * http://code.google.com/p/zxing/source/browse/trunk/android/src/com/google/zxing/client/android/encode/EncodeActivity.java 
    * http://code.google.com/p/zxing/source/browse/trunk/android/src/com/google/zxing/client/android/encode/QRCodeEncoder.java 
    */ 

    private static final int WHITE = 0xFFFFFFFF; 
    private static final int BLACK = 0xFF000000; 

    Bitmap encodeAsBitmap(String contents, BarcodeFormat format, int img_width, int img_height) throws WriterException { 
     String contentsToEncode = contents; 
     if (contentsToEncode == null) { 
      return null; 
     } 
     Map<EncodeHintType, Object> hints = null; 
     String encoding = guessAppropriateEncoding(contentsToEncode); 
     if (encoding != null) { 
      hints = new EnumMap<EncodeHintType, Object>(EncodeHintType.class); 
      hints.put(EncodeHintType.CHARACTER_SET, encoding); 
     } 
     MultiFormatWriter writer = new MultiFormatWriter(); 
     BitMatrix result; 
     try { 
      result = writer.encode(contentsToEncode, format, img_width, img_height, hints); 
     } catch (IllegalArgumentException iae) { 
      // Unsupported format 
      return null; 
     } 
     int width = result.getWidth(); 
     int height = result.getHeight(); 
     int[] pixels = new int[width * height]; 
     for (int y = 0; y < height; y++) { 
      int offset = y * width; 
      for (int x = 0; x < width; x++) { 
       pixels[offset + x] = result.get(x, y) ? BLACK : WHITE; 
      } 
     } 

     Bitmap bitmap = Bitmap.createBitmap(width, height, 
       Bitmap.Config.ARGB_8888); 
     bitmap.setPixels(pixels, 0, width, 0, 0, width, height); 
     return bitmap; 
    } 

    private static String guessAppropriateEncoding(CharSequence contents) { 
     // Very crude at the moment 
     for (int i = 0; i < contents.length(); i++) { 
      if (contents.charAt(i) > 0xFF) { 
       return "UTF-8"; 
      } 
     } 
     return null; 
    } 

これは私のonClick全体のプロセスを開始する方法である:

// barcode data 
     String barcode_data = "123456"; 

     // barcode image 
     ImageView iv = new ImageView(this); 
     try { 
      barCode = encodeAsBitmap(barcode_data, BarcodeFormat.CODE_128, 300, 40); 
      // bitmap.getRowBytes(); 
      iv.setImageBitmap(barCode); 

     } catch (WriterException e) { 
      e.printStackTrace(); 
     } 

     iv.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
     innerLayout.addView(iv); 

は、だから今、私は基本的に生成することが可能だと表示バーコードは今私の領収書に印刷できるようにしたい。

答えて

0

あなたの質問から理解できるように、基本的にQRコードを含むビットマップを印刷したいと思っています。

PrintHelperクラスを同じものとして使用できます。公式のドキュメンテーションのサンプルコードは、その使用方法を示しています。

private void doPhotoPrint() { 
PrintHelper photoPrinter = new PrintHelper(getActivity()); 
photoPrinter.setScaleMode(PrintHelper.SCALE_MODE_FIT); 
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), 
     R.drawable.droids); 
photoPrinter.printBitmap("droids.jpg - test print", bitmap); 

}

また、それは言う:

PrintBitmapメソッド()メソッドが呼び出された後、あなたのアプリケーションからそれ以上のアクションは必要ありません。 Android印刷ユーザーインターフェイスが表示され、ユーザーはプリンタと印刷オプションを選択できます。

更新:

上記方法プリントのみビットマップ。レイアウト全体を印刷するには(あなたが言ったようにレシートのように)、指示書がhereにレイアウトされています。

まず、PrintDocumentAdapterクラスを拡張して特定のメソッドをオーバーライドすることです。そのアダプタには、印刷するファイルのコンテンツを描画するために呼び出されるonWrite()というコールバックメソッドがあります。この方法では、Canvasオブジェクトを使用してコンテンツを描画する必要があります。このオブジェクトは、印刷が要求された場合、その後など

をビットマップ/ライン/テキストを描画次のようにPrintManager」クラス `のインスタンスを取得するために、すべてのヘルパーメソッドがあります。

PrintManager printManager = (PrintManager) getActivity() 
     .getSystemService(Context.PRINT_SERVICE); 

その後、呼び出し印刷方法:

printManager.print(jobName, new CustomDocumentAdapter(getActivity()), 
     null); 

これが役立つかどうかを教えてください。

+0

簡単な質問ですが、この画像は単独ですか?領収書なので、バーコードやqrcodeだけではありません。 – user3718908

+0

@ user3718908:要件に応じて編集されます。 – Yashasvi

+0

申し訳ありませんが、あなたの時間に非常に感謝し、これを試してみましょう、なぜそれがdownvoteを持っているのだろうか。 :) – user3718908

関連する問題