【问题标题】:height too large in Thermal Or POS Printer in AndroidAndroid 中热敏打印机或 POS 打印机的高度太大
【发布时间】:2021-03-29 06:18:45
【问题描述】:

请帮忙... 我想使用 android 在热敏打印机中打印收据,如果图像高度大于 350 PX,则此错误显示“高度太大”

我的代码:

 private void printVoucher(){
        ArrayList<Printable> printables = new ArrayList<>();
    
        Picasso.get()
                .load("Path Image")
                .into(new Target() {
                    @Override
                    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                        printables.add(new ImagePrintable.Builder(bitmap).setNewLinesAfter(0).build());
                        //printing.print(printables);
                        Printooth.INSTANCE.printer().print(printables);
                    }

                    @Override
                    public void onBitmapFailed(Exception e, Drawable errorDrawable) {

                    }

                    @Override
                    public void onPrepareLoad(Drawable placeHolderDrawable) {

                    }
                });
    }

错误:

E/decodeBitmap error:  height is too large
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.mirasoft.mirasoftapperp, PID: 20979
    java.lang.NullPointerException
        at com.mazenrashed.printooth.data.DefaultPrintingImagesHelper.getBitmapAsByteArray(DefaultPrintingImagesHelper.kt:8)
        at com.mazenrashed.printooth.data.printable.ImagePrintable.getPrintableByteArray(ImagePrintable.kt:16)
        at com.mazenrashed.printooth.utilities.Printing.printPrintables(Printing.kt:66)
        at com.mazenrashed.printooth.utilities.Printing.access$printPrintables(Printing.kt:13)
        at com.mazenrashed.printooth.utilities.Printing$initDeviceCallback$1.onDeviceConnected(Printing.kt:43)
        at com.mazenrashed.printooth.utilities.Bluetooth$ConnectThread.lambda$run$0$Bluetooth$ConnectThread(Bluetooth.java:324)
        at com.mazenrashed.printooth.utilities.-$$Lambda$Bluetooth$ConnectThread$PrUWb5GXkpw9YbMT2riXHliWDR8.run(Unknown Source:2)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6944)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

【问题讨论】:

  • 您使用的库仅支持最高 255 PX 的图像。请参阅github.com/mazenrashed/Printooth/blob/… 第 67 行。高度必须适合两个十六进制数字。要么获得较小的图像,将其缩小到 255 行,要么找到另一个打印库。
  • 谢谢,你知道任何其他库可以打印任何尺寸的图像吗?

标签: android thermal-printer pos


【解决方案1】:

我找到了一种解决方法,可以通过将图像拆分为较小的图像来使用此打印库。

Bitmap bmp1 = Bitmap.createBitmap(screen, 200, 300, 350, 255);
Bitmap bmp2 = Bitmap.createBitmap(screen, 200, 555, 350, 255);
Bitmap bmp3 = Bitmap.createBitmap(screen, 200, 810, 350, 155);

ArrayList<Printable> al = new ArrayList<>();

al.add(new ImagePrintable.Builder(bmp1)
       .setAlignment(DefaultPrinter.Companion.getALIGNMENT_CENTER())
       .build());
al.add(new ImagePrintable.Builder(bmp2)
       .setAlignment(DefaultPrinter.Companion.getALIGNMENT_CENTER())
       .build());
al.add(new ImagePrintable.Builder(bmp3)
       .setAlignment(DefaultPrinter.Companion.getALIGNMENT_CENTER())
       .build());

Printooth.INSTANCE.printer().print(al);

Bitmap.createBitmap 在这里用于裁剪图像,它需要参数:original bitmapxywidthheight 即使我将其拆分,图像也打印得很好。

【讨论】:

    猜你喜欢
    • 2019-11-23
    • 1970-01-01
    • 2014-06-27
    • 2021-08-23
    • 2019-08-15
    • 2013-03-20
    • 2021-01-14
    • 2012-10-05
    相关资源
    最近更新 更多