gpt4 book ai didi

java - Epson epos sdk 收据对齐问题

转载 作者:行者123 更新时间:2023-12-03 11:52:21 65 4
gpt4 key购买 nike

我目前正在使用 epson ePOS SDK for android。我需要打印菜单名称向左对齐且价格在同一行中向右对齐的收据,但它不能正常工作,我的临时解决方案是添加一些馈线以使其价格对齐,是否可以让文本在同一行中左右对齐?(以下附件,请忽略问号)

                mPrinter.addTextAlign(Printer.ALIGN_LEFT);
mPrinter.addFeedLine(0);
textData.append(menuName);
mPrinter.addText(textData.toString());
textData.delete(0, textData.length());
mPrinter.addFeedLine(0);

//print price
mPrinter.addTextAlign(Printer.ALIGN_RIGHT);
textData.append(price + "Y" + "\n");
mPrinter.addText(textData.toString());
textData.delete(0, textData.length());
mPrinter.addFeedLine(0);

enter image description here

最佳答案

80mm 相当于每行 42 列...可以轻松填充:

mPrinter.addText(padLine(menuName, price + "¥", 42) + "\n");

所需的 String 操作方法看起来很相似:

/** utility: pads two strings to columns per line */
protected String padLine(@Nullable String partOne, @Nullable String partTwo, int columnsPerLine){
if(partOne == null) {partOne = "";}
if(partTwo == null) {partTwo = "";}
String concat;
if((partOne.length() + partTwo.length()) > columnsPerLine) {
concat = partOne + " " + partTwo;
} else {
int padding = columnsPerLine - (partOne.length() + partTwo.length());
concat = partOne + repeat(" ", padding) + partTwo;
}
return concat;
}

/** utility: string repeat */
protected String repeat(String str, int i){
return new String(new char[i]).replace("\0", str);
}

在填充之前,应将价格格式化为货币。

为了让它真正“完美无缺”...当 String concat 超过长度 42 时,String partOne 应该被多余的部分截断长度 - 并再次连接。超过 int columnsPerLine 很可能会弄乱输出。

关于java - Epson epos sdk 收据对齐问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40217629/

65 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com