我目前能够使用Swift将文本发送到打印机(例如EPSON TM20-II)。打印机接收到数据并进行打印,没有任何问题。 (为此,我将字符串编码为UTF-8)
我的自定义套接字类:
class OutSocket {
var addr: String
var port: Int
var task: NSURLSessionStreamTask!
init(host: String, port: Int){
print("init")
self.addr = host
self.port = port
setupConnection()
}
func setupConnection() {
print("setup")
let session = NSURLSession(configuration: .defaultSessionConfiguration())
task = session.streamTaskWithHostName(addr, port: port)
self.task.resume()
}
func send(data: NSData) {
self.task.writeData(data, timeout: 5.0) { (error) in
if error == nil {
print("Data sent")
} else {
print("Nope")
}
}
}
}
而且我正在这样使用它:
let socket = OutSocket(host: "192.168.1.42", port: 9100)
socket.send((itemText + "\n").dataUsingEncoding(NSUTF8StringEncoding)!)
我可以将图像发送到打印机,但是它只打印数据字符。如何打印图像,而不打印数据字符?
我看过Epson SDK,但我希望它能与任何支持TCP / IP打印的打印机一起使用。我试图在base64中编码图像,但仍然无法打印图像。
此处为代码:
let socket = OutSocket(host: "192.168.1.42", port: 9100)
let image = UIImage(named: "name-logo")
let imgData = UIImagePNGRepresentation(image!)
let imgEncoded = imgData!.base64EncodedDataWithOptions(.Encoding64CharacterLineLength)
socket.send(imgEncoded)
谢谢,
我有同样的问题。 @ Ro22e0:您现在有解决方案吗?
这是我的代码(Swift 5.1):
socket = Output(host: "192.168.2.200", port: 9100)
let image = UIImage(named: "Logo.png")
let imgData = image!.jpegData(compressionQuality: 100)
let imgEncoded = imgData!.base64EncodedString()
let dataEnc = imgEncoded.data(using: .utf8)
socket.send(data: dataEnc! as NSData)
我只得到打印图像的字符。