使用端口9100上的套接字将图像发送到打印机

问题描述 投票:1回答:1

我目前能够使用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)

谢谢,

swift sockets printing swift2
1个回答
0
投票

我有同样的问题。 @ 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)

我只得到打印图像的字符。

© www.soinside.com 2019 - 2024. All rights reserved.