我正在 iPad 上构建一个 POS,使用 swift 通过以太网连接打印到 Epson 打印机。
我正在使用 Epson 文档和示例项目来让打印机正常运行。
现在问题来了:
我需要更改文本大小(更大)然后恢复到原始文本大小 - 我最初可以更改 textSize 没问题 -> 但是当我恢复到原始大小时,它确实变小了,但它不像原来那么小。见下文:
根据 Epson docs - addTextSize()- 是我正在寻找的方法,它接受 1-8 之间的 Int 值来缩放高度和宽度(它声明 1 是默认值)
所以这是我的代码:
func sendPrint(printer: Epos2Printer) -> Bool {
var result = EPOS2_SUCCESS.rawValue
let textData: NSMutableString = NSMutableString()
result = printer.addFeedLine(2)
if result != EPOS2_SUCCESS.rawValue {
printer.clearCommandBuffer()
MessageView.showErrorEpos(result, method:"addFeedLine")
return false
}
textData.append("Food item $12.00\n")
textData.append("Food item $12.00\n")
textData.append("Food item $12.00\n")
textData.append("Food item $12.00\n")
// SEND AT ORIGINAL TEXT SIZE (Should be 1,1)
result = printer.addText(textData as String)
if result != EPOS2_SUCCESS.rawValue {
printer.clearCommandBuffer()
MessageView.showErrorEpos(result, method:"addText")
return false
}
textData.setString("")
// CHANGE TEXT SIZE BIGGER WIDTH (2,1)
result = printer.addTextSize(2, height:1)
if result != EPOS2_SUCCESS.rawValue {
printer.clearCommandBuffer()
MessageView.showErrorEpos(result, method:"addTextSize")
return false
}
textData.append("ADDRESS \n")
textData.append("CITY \n")
textData.append("STATE \n")
textData.append("ZIPCODE \n")
result = printer.addText(textData as String)
if result != EPOS2_SUCCESS.rawValue {
printer.clearCommandBuffer()
MessageView.showErrorEpos(result, method:"addText")
return false
}
textData.setString("")
// CHANGE TEXT SIZE BACK TO DEFAULT (1,1)
result = printer.addTextSize(1, height: 1)
if result != EPOS2_SUCCESS.rawValue {
printer.clearCommandBuffer()
MessageView.showErrorEpos(result, method:"addTextSize")
return false
}
textData.append("Food item $12.00\n")
textData.append("Food item $12.00\n")
textData.append("Food item $12.00\n")
textData.append("Food item $12.00\n")
result = printer.addText(textData as String)
if result != EPOS2_SUCCESS.rawValue {
printer.clearCommandBuffer()
MessageView.showErrorEpos(result, method:"addText")
return false
}
textData.setString("")
result = printer.addFeedLine(2)
if result != EPOS2_SUCCESS.rawValue {
printer.clearCommandBuffer()
MessageView.showErrorEpos(result, method:"addFeedLine")
return false
}
result = printer.addCut(EPOS2_CUT_FEED.rawValue)
if result != EPOS2_SUCCESS.rawValue {
printer.clearCommandBuffer()
MessageView.showErrorEpos(result, method:"addCut")
return false
}
printer.beginTransaction()
result = printer.sendData(Int(EPOS2_PARAM_DEFAULT))
if result != EPOS2_SUCCESS.rawValue {
printer.clearCommandBuffer()
MessageView.showErrorEpos(result, method:"sendData")
printer.disconnect()
return false
}
printer.endTransaction()
return true
}
现在我知道一个可行的选择是从一开始就设置 textSize - 但我更愿意将顶部和底部保持为尽可能小的尺寸。
我还尝试指定EPOS2_PARAM_DEFAULT为产生相同结果的参数 - 我尝试将 0 作为导致 textSize 更改失败的输入 - 我尝试使用像 1.5 或 .5 这样的双精度,但无法编译
有任何想法吗?
谢谢你的帮助!
