0

我正在 iPad 上构建一个 POS,使用 swift 通过以太网连接打印到 Epson 打印机。

我正在使用 Epson 文档和示例项目来让打印机正常运行。

现在问题来了:

我需要更改文本大小(更大)然后恢复到原始文本大小 - 我最初可以更改 textSize 没问题 -> 但是当我恢复到原始大小时,它确实变小了,但它不像原来那么小。见下文:

字体大小

根据 Epson docs - addTextSize()- 是我正在寻找的方法,它接受 1-8 之间的 Int 值来缩放高度和宽度(它声明 1 是默认值)

https://reference.epson-biz.com/modules/ref_epos_sdk_ios_en/index.php?vid=ref_epos_sdk_ios_en_epos2printerclass_addtextsize#BHIHFBFB

所以这是我的代码:

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 这样的双精度,但无法编译

有任何想法吗?

谢谢你的帮助!

4

1 回答 1

1

经过大量尝试后,我想通了——我会继续发帖,因为它可能会在未来对某人有所帮助,因为 iPad 似乎在 POS 解决方案中变得越来越流行

因此,当您更改文本大小时,字体似乎也会发生变化 - 我认为这可能是 Epos SDK 中的一个错误,因为他们声明默认字体是EPOS2_FONT_A但看起来初始字体开始为EPOS2_FONT_B-> 然后当您更改文本时大小它将字体恢复为EPOS2_FONT_A (default)

如果您想将其保留在较小的字体上,只需addTextFont(EPOS2_FONT_B)在准备打印数据时设置

于 2020-06-09T20:33:39.257 回答