
由于打印demo中只有一些参数设定和基础打印,也能够推动排版功能,后引入com.pax.gl.imgprocessing中的接口


生成bitmap实现打印,可支持打印排版,打印照片等。
1、重要的引入jar包,一开始只引入了第一个,然后是痛苦的bug排查。。。


2、根据API,添加打印功能百富a920使用说明,自己封装了一个打印工具类

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("Payment_time:" + orderTime, FONT_NORMAL);
// Amount:
page.addLine().addUnit("Amount:$" + orderAmt, FONT_NORMAL);
// ===:
page.addLine().addUnit("==================================", FONT_NORMAL, IImgProcessing.IPage.EAlign.CENTER);
// Payment Successful:
page.addLine().addUnit("Payment Successful", FONT_BIG, IImgProcessing.IPage.EAlign.CENTER, IImgProcessing.IPage.ILine.IUnit.TEXT_STYLE_BOLD);
page.addLine().adjustTopSpace(20);
// Print Time:
page.addLine().addUnit("Print Time:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()), FONT_NORMAL);
// Terminal:
page.addLine().addUnit("Terminal:" + SysTester.getInstance().getTerminfoModel() + " " + SysTester.getInstance().getDevInterfaceVer(), FONT_NORMAL);
page.addLine().adjustTopSpace(20);
//二维码
page.addLine().addUnit(BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.ic_qrcode), IImgProcessing.IPage.EAlign.CENTER);
page.addLine().adjustTopSpace(2);
page.addLine().addUnit("Scan to download Mpay", FONT_NORMAL, IImgProcessing.IPage.EAlign.CENTER);
page.addLine().addUnit("\n\n\n\n\n\n", FONT_NORMAL);
IImgProcessing imgProcessing = GetObj.getGL().getImgProcessing();
return imgProcessing.pageToBitmap(page, 384);
}
}
调用打印方式
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shouji/article-121093-1.html
瞧你自己那点出息