在Android中使用PrintHelper打印Zxing生成的QR码

时间:2019-06-28 12:15:53

标签: android zxing

我需要从与PrinterHelper一起使用的Android设备上打印QR码。当我打印位图时,它的打印方式变大了。 我需要在活动中的ImageView中打印需要打印的QR码。

如何将生成的QR码打印在宽度和高度为4厘米而不是15厘米的纸上,而Android会自动将其打印为15厘米。

我尝试将比例模式设置为SCALE_MODE_FIT 我尝试创建缩放的位图

这行不通。

Bitmap temp = ((BitmapDrawable)image.getDrawable()).getBitmap();
Bitmap toPrint = Bitmap.createScaledBitmap(temp, 200, 200, false);
PrintHelper printer = new PrintHelper(MainActivity.this);
printer.setScaleMode(PrintHelper.SCALE_MODE_FIT);
printer.printBitmap("print test", toPrint);

1 个答案:

答案 0 :(得分:0)

这是我的实现方式,代码在科特林中。

1。生成条形码位图(使用Zxing库)

import android.graphics.Bitmap
import android.os.Build
import android.support.annotation.RequiresApi
import com.google.zxing.BarcodeFormat
import com.google.zxing.MultiFormatWriter
import com.journeyapps.barcodescanner.BarcodeEncoder

object BarcodeUtil {

    @RequiresApi(Build.VERSION_CODES.KITKAT)
    fun generateBarcodeBitmap(barcodeData: String): Bitmap? {

        lateinit var multiFormatWriter: MultiFormatWriter

        return try {
            multiFormatWriter = MultiFormatWriter()
            val bitMatrix = multiFormatWriter.encode(barcodeData, BarcodeFormat.CODE_128, 4000, 800)
            val barcodeEncoder = BarcodeEncoder()
            val imgBitmap = barcodeEncoder.createBitmap(bitMatrix)
            imgBitmap
        } catch (e: Throwable) {
            e.stackTrace
            e.cause
            e.message
            null
        }
    }
}

我生成了条形码Bitmap,最后最后从try块返回了条形码。

2。将位图加载到ImageView

val barCode = mView.findViewById(R.id.img_barcode) as ImageView

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            Glide.with(activity)
                    .load(BarcodeUtil.generateBarcodeBitmap(edtBarcode.text.toString()))
                    .into(barCode)
        }

我使用Glide库在Barcode Bitmap上设置了ImageViewGlide是图像加载库。从here

了解更多信息

要记住的一件事是,不建议下载一个仅用于实现一项功能的全新库。