由于打印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