Печать сгенерированного zxing QR-кода с помощью PrintHelper в Android - PullRequest
0 голосов
/ 28 июня 2019

Мне нужно распечатать QR-код с моего устройства Android, которое работает с PrinterHelper.Когда я печатаю растровое изображение, оно печатается в большом размере.QR-код, который должен быть напечатан, находится в программе ImageView в моей деятельности.

Как напечатать сгенерированный QR-код на бумаге шириной и высотой, например, 4 см вместо 15 см, чтоавтоматически выполняется Android.

Я попытался установить режим масштабирования на 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 голосов
/ 28 июня 2019

Вот как я этого добился, код в Kotlin .

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 на моем ImageView.Glide - библиотека загрузки изображений.Узнайте больше об этом из здесь

Следует помнить, что загрузка совершенно новой библиотеки только для достижения одной функциональности не рекомендуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...