一个支持打印html的打印机,想要 java通过局域网链接打印机打印html文件

一个支持打印html的打印机,想要 java通过局域网链接打印机打印html文件
这是打印机的局域网打印协议 机器型号MCP-58

img


img


img


img

这是我的代码

public static byte[] makePrinterData(byte dataType, String sendData) {
    System.out.println(sendData);
    int dataLen = sendData.length();
    byte[] controlData = new byte[6 + dataLen];
    controlData[0] = (byte) 0xbc;
    controlData[1] = dataType;
    controlData[2] = (byte) (dataLen & 0xff);
    controlData[3] = (byte) (dataLen >> 8 & 0xff);
    controlData[4] = (byte) (dataLen >> 16 & 0xff);
    controlData[5] = (byte) (dataLen >> 24 & 0xff);
    for (int i = 6; i < dataLen + 6; i++) {
        controlData[i] = (byte) (sendData.charAt(i - 6));
    }
    return controlData;
}

public static void main(String[] args) {
    Socket s = null;
    try {
        JSONObject sendData = new JSONObject();
        s = new Socket("192.168.31.217", 10001);
        sendData.put("tp","9001");
        sendData.put("taskid","123456789");
        sendData.put("paper_type",1);
        sendData.put("paper_width", 58);
        sendData.put("pdata", "<html> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"> </head> <body style=\"width:384px;\"> <p style=\"text-align:center;font-size:48px;\">欢迎光临</p > <h1 style=\"text-align:center;\">测试页</h1> <br> <div> </div> </body> </html>");
        byte[] printData = makePrinterData((byte) 0x01,sendData.toString());

        InputStream is = s.getInputStream();
        OutputStream os = s.getOutputStream();
        DataOutputStream output = new DataOutputStream(os);
        BufferedReader br = new BufferedReader(new InputStreamReader(is));

        output.write(printData, 0, printData.length);

        String info = null;
        while ((info = br.readLine()) != null) {
            System.out.println(info);

        }
        s.close();
    } catch (Exception e) {
        System.out.println("发送失败: ");
        e.printStackTrace();
    }
}

运行结果:
�J {"tp":9002, "did":"20140704Q4", "taskid":"null", "progress":1, "status":1}

根据局域网协议,解析成功了但是打印失败了,感觉应该是数据格式问题 但是不知错在哪了
希望各位帮我看看错在哪了,谢谢!
把tp改成了1002 能打印出纸但是全是空白 不管pdata中输入什么

output.write(printData, 0, printData.length);

这条语句后面加一条语句试试。

output.flush();

发现问题了 编码格式不对 html格式打印机有些不能识别