我可以通过热敏打印机打印收据(byte[] 打印机格式),如下所示:
// Print a receipt
OutputStream outputStream = mPrinterSocket.getOutputStream();
for (byte[] packet : content)
outputStream.write(packet);
outputStream.flush();
但我无法将收据(byte[] 打印机格式)保存到文件(pdf 或图像)中。 我试过了:
// Save a receipt
try (OutputStream outputStream = new FileOutputStream(filePath)) {
for (byte[] packet : content) {
outputStream.write(packet);
outputStream.flush();
}
} catch (Exception exception) {
exception.printStackTrace();
}
但它返回了一个损坏的文件,其中包含:
䀛琛ᬐšℝ䴑ਊℝ䴀੍੍ㄊ⼵㔰ㄯ‹ㄱ㈺‱†††††慔汢䔛ਁ′潂獩潳獮†††††††††††ᬊE‱潃慣†††††††††††⸲〲ᬊE‱慆瑮††††††††††⸲〲ⴊⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭਭ䔛吁呏䱁†††††††††䔠剕㐠㐮ਰਊ䔛䴀牥楣⃠楢湥⁴ਡਊਊᴊV
“将字节[]打印到文件”的过程与“将字节[]保存到文件”的过程是否不同?例如,我使用字符 {0x1b, 0x45, 0x01} 将文本加粗,这是一个问题吗?我想避免重新格式化所有内容或使用外部库。
最佳答案
我会将 FileOutputStream
包装到 BufferedOutputStream
中,而不是使用普通的 FOS。读取或写入文件时,最好使用缓冲区。
此外,您不需要在每个数据包之后都在循环之外 flush()
- 就像您的第一个示例一样。这也提高了性能。
关于android - 将收据打印到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56145613/