You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Brother QL-720NW打印位图二维码仅出空白标签的解决问询

Brother QL-720NW打印二维码空白问题修复方案

问题背景

使用Brother QL-720NW标签打印机打印二维码位图时,已成功生成并在ImageView中正常显示二维码,但连接打印机后仅打印空白标签,打印机连接状态正常。

排查方向及修复步骤

1. 适配位图尺寸与标签纸规格

QL-720NW的W62RB标签宽度为62mm,对应打印机300DPI分辨率下约730像素(计算:62mm ÷ 25.4mm/英寸 × 300DPI ≈ 732像素)。原代码生成100×100的小尺寸位图,可能因缩放比例或位置偏移导致无法在标签上正常显示。

2. 修正位图颜色格式

原代码使用ARGB_8888格式,可能包含透明通道,部分标签打印机对带透明通道的位图兼容性差。建议改用无透明通道的RGB_565格式,并确保二维码仅包含纯黑、纯白两色。

3. 确认打印参数与实际标签匹配

  • 确保labelNameIndex对应正确的标签型号:LabelInfo.QL700.W62RB.ordinal()需准确匹配62mm圆形标签;
  • 取消注释paperSize设置,明确指定纸张类型,避免参数冲突;
  • 检查打印方向(orientation):二维码为正方形,若设置为LANDSCAPE可能导致显示异常,可尝试改为PORTRAIT或根据标签方向调整。

4. 确保存储权限正常

打印机需要通过workPath临时存储打印文件,需确保APP已获取WRITE_EXTERNAL_STORAGE权限(Android 10及以上需适配Scoped Storage)。

修改后的代码示例

生成二维码位图方法

Bitmap encodeAsBitmap(String str) throws WriterException {
    // 适配62mm标签的二维码尺寸(300DPI下约730像素)
    int qrTargetSize = 730;
    QRCodeWriter writer = new QRCodeWriter();
    BitMatrix bitMatrix = writer.encode(str, BarcodeFormat.QR_CODE, qrTargetSize, qrTargetSize);

    int width = bitMatrix.getWidth();
    int height = bitMatrix.getHeight();
    int[] pixels = new int[width * height];

    // 生成纯黑纯白像素,无透明通道
    for (int y = 0; y < height; y++) {
        int rowOffset = y * width;
        for (int x = 0; x < width; x++) {
            pixels[rowOffset + x] = bitMatrix.get(x, y) ? Color.BLACK : Color.WHITE;
        }
    }

    // 使用RGB_565格式避免透明通道问题
    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
    bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
    return bitmap;
}

打印方法

void printImage(Bitmap bitmap) {
    final Printer printer = new Printer();
    PrinterInfo settings = printer.getPrinterInfo();
    settings.ipAddress = "192.168.2.149";
    settings.workPath = "/storage/emulated/0/Download";

    settings.printerModel = PrinterInfo.Model.QL_720NW;
    settings.port = PrinterInfo.Port.NET;
    // 正方形二维码建议使用PORTRAIT方向,或根据标签实际需求调整
    settings.orientation = PrinterInfo.Orientation.PORTRAIT;
    // 明确指定纸张类型与标签型号匹配
    settings.paperSize = PrinterInfo.PaperSize.CUSTOM;
    settings.align = PrinterInfo.Align.CENTER;
    settings.valign = PrinterInfo.VAlign.MIDDLE;
    settings.printMode = PrinterInfo.PrintMode.ORIGINAL;
    settings.numberOfCopies = 1;
    settings.labelNameIndex = LabelInfo.QL700.W62RB.ordinal();
    settings.isAutoCut = true;
    settings.isCutAtEnd = false;

    printer.setPrinterInfo(settings);

    new Thread(new Runnable() {
        @Override
        public void run() {
            if (printer.startCommunication()) {
                Log.e("Tag: ", "Connection made.");
                // 若打印方向为LANDSCAPE,可在此旋转位图适配
                // Matrix matrix = new Matrix();
                // matrix.postRotate(90);
                // Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
                PrinterStatus result = printer.printImage(bitmap);
                Log.e("Tag: ", "Printing!");
                if (result.errorCode != PrinterInfo.ErrorCode.ERROR_NONE) {
                    Log.d("TAG", "ERROR - " + result.errorCode);
                }
                printer.endCommunication();
            } else {
                Log.e("Tag: ", "Cannot make a connection.");
            }
        }
    }).start();
}

验证建议

  1. 打印前将生成的位图保存到本地,检查是否为清晰的黑白二维码;
  2. 查看打印机返回的errorCode,根据错误码定位问题(如ERROR_PAPER_SIZE_MISMATCH表示纸张参数不匹配);
  3. 使用Brother官方打印工具测试打印相同位图,确认打印机硬件正常。

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 23:09:22