百富POS机A920安卓系统打印功能的实现

本文介绍了如何在安卓系统上实现百富POS机A920的打印功能,主要涉及图像处理接口IImgProcessing.IPage的相关操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于打印demo中只有一些参数设置和基础打印,也无法实现排版功能,后采用 com.pax.gl.imgprocessing中的接口

IImgProcessing.IPage


生成bitmap实现打印,可支持打印排版,打印图片等。

1、重要的引入jar包,一开始只引入了第一个,然后是痛苦的bug排查。。。
2、根据API,添加打印功能,自己封装了一个打印工具类
package com.hisun.pos.utils.printer;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

import com.hisun.pos.MyApplication;
import com.hisun.pos.R;
import com.hisun.pos.utils.LogUtil;
import com.pax.gl.imgprocessing.IImgProcessing;
import com.pax.ipp.service.aidl.dal.printer.EFontTypeAscii;
import com.pax.ipp.service.aidl.dal.printer.EFontTypeExtCode;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created by ylh on 2018/1/18 0018.
 */

public class PrinterUtil {

    private static final int FONT_BIG = 24;
    private static final int FONT_NORMAL = 20;
    private static Context mContext;

    public PrinterUtil(Context context) {
        mContext = context;
    }

    public void print(String str, Boolean containBitmap) {
        //初始化
        PrinterTester.getInstance().init();
        //字体设置(ASCII,拓展码)
        PrinterTester.getInstance().fontSet(EFontTypeAscii.FONT_8_16, EFontTypeExtCode.FONT_16_16);
        //间距设置(字间距,行间距)
        PrinterTester.getInstance().spaceSet(Byte.parseByte("0"),
                Byte.parseByte("0"));

        //字符打印左边界
        PrinterTester.getInstance().leftIndents(Short.parseShort("0"));
        //打印黑度
        PrinterTester.getInstance().setGray(1);
        //双倍宽度<->正常宽度
        if (true) {
            PrinterTester.getInstance().setDoubleWidth(true, true);
        }
        //双倍高度<->正常高度
        if (true) {
            PrinterTester.getInstance().setDoubleHeight(true, true);
        }
        //正常打印<->反显打印
        PrinterTester.getInstance().setInvert(false);
        //打印图片
        if (containBitmap) {
            PrinterTester.getInstance().printBitmap(
                    BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.ic_qrcode));
        }
        //打印状态
        String status = PrinterTester.getInstance().getStatus();

        //打印文本
        PrinterTester.getInstance().printStr(str, null);
        //走纸
        PrinterTester.getInstance().step(150);

        //开始打印
        PrinterTester.getInstance().start();
    }

    public void print(String orderNo, String orderTime, String orderAmt) {
        Bitmap bitmap = generate(orderNo, orderTime, orderAmt);
        //初始化
        PrinterTester.getInstance().init();
        String statues = PrinterTester.getInstance().getStatus();
        LogUtil.debug(statues);
        if (statues.contains("Success")){
            PrinterTester.getInstance().printBitmap(bitmap);
            PrinterTester.getInstance().start();
        }
    }

    public Bitmap generate(String orderNo, String orderTime, String orderAmt) {
        IImgProcessing.IPage page = GetObj.getGL().getImgProcessing().createPage();
        //设置字体
//        page.setTypeFace(TYPE_FACE);
        //往页面里添加新的一行
//        page.addLine();
        //创建一个元素,可用IImgProcessing.IPage.ILine.addUnit(IUnit)来生成行
        page.adjustLineSpace(10);

        //logo
        page.addLine().addUnit(BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.ic_mpay));

        // 凭单抬头
        page.addLine().addUnit("Payment Voucher", FONT_BIG, IImgProcessing.IPage.EAlign.CENTER, IImgProcessing.IPage.ILine.IUnit.TEXT_STYLE_BOLD);

        page.addLine().adjustTopSpace(20);

        // 门店名称
        page.addLine().addUnit("Store:" + MyApplication.getLoginResp().getUserBasicInfo().getMercName(),
                FONT_NORMAL);

        // 商户id
        page.addLine().addUnit("Merchant ID:" + MyApplication.getLoginResp().getUserBasicInfo().getUserId(), FONT_NORMAL);

        // 操作人员
        page.addLine().addUnit("Operator:" + MyApplication.getLoginResp().getUserBasicInfo().getDisplayNm(), FONT_NORMAL);

        // Order:
        page.addLine().addUnit("Order:" + orderNo, FONT_NORMAL);

        // Payment_time:
        page.addLine().addUnit("Pa
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值