Tru*_*tch 3 java thermal-printer epson
我目前正在使用 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);
Run Code Online (Sandbox Code Playgroud)
80mm 就像每行 42 列......可以轻松填充:
mPrinter.addText(padLine(menuName, price + "?", 42) + "\n");
Run Code Online (Sandbox Code Playgroud)
所需的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);
}
Run Code Online (Sandbox Code Playgroud)
在填充之前,应该将价格格式化为货币。
使其真正“完美无瑕”......当String concat超过 length 时42,String partOne应该被多余的长度截断 - 并再次连接。超过int columnsPerLine很可能会弄乱输出。
| 归档时间: |
|
| 查看次数: |
2369 次 |
| 最近记录: |