我可以通过热敏打印机打印收据(字节[]打印机格式):
//打印收据
OutputStream outputStream = mPrinterSocket.getOutputStream();
对于(byte []数据包:内容)
outputStream.write(packet);
outputStream.flush();
但是我无法将收据(byte []打印机格式)保存到文件(pdf或图像)中。 我试过了:
//保存收据
尝试(OutputStream outputStream = new FileOutputStream(filePath)){
对于(字节[]数据包:内容){
outputStream.write(packet);
outputStream.flush();
}
} catch(Exception exception){
exception.printStackTrace();
}
但是它返回了一个损坏的文件,其中包含:
䀛琛ᬐšℝ䴑ਊℝ䴀੍੍ㄊ⼵㔰ㄯ‹ㄱ㈺‱†††††慔汢䔛ਁ'潂獩潳狝††††††††††††ᬊE‱潃惯††††††††††E⸲〲ᬊ††††††††††⸲〲ⴊⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭਭ䔛呼吁⸲〲ⴊⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭਭ䔛††††††††††䔠剕㐠㐮ਰਊ䔛䴀牥楣⃠楢湥⁴ਡਊਊᴊV
“将字节[]打印到文件”与“将字节[]保存到文件”的过程不同吗?例如,我使用字符{0x1b,0x45、0x01}将文本加粗,这是问题吗?我想避免重新格式化所有内容或使用外部库。
答案 0 :(得分:1)
我将FileOutputStream
包裹到BufferedOutputStream
中,而不是使用普通的FOS。在读取或写入文件时,始终最好使用缓冲区。
此外,您不需要在循环结束后的每个数据包之后flush()
,就像您的第一个示例一样。这也可以提高性能。
答案 1 :(得分:0)
您可以使用Android的itext库来创建PDF文件并保存。 For more details Read Here