我目前正在使用适用于 Android 的 epson ePOS SDK。
我需要打印收据,菜单名称在同一行中左对齐,价格右对齐,但它无法正常工作,
我的临时解决方案是添加一些提要行以使其价格正确对齐,是否可以使文本在同一行中左右对齐?
(以下附件,请忽略问号符号)
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);
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
, then String partOne
应该被多余的长度截断 - 并再次连接。超过int columnsPerLine
很可能会弄乱输出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)