将收据打印到文件

时间:2019-05-15 09:12:59

标签: android image file pdf printing

我可以通过热敏打印机打印收据(字节[]打印机格式):

  //打印收据
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}将文本加粗,这是问题吗?我想避免重新格式化所有内容或使用外部库。

2 个答案:

答案 0 :(得分:1)

我将FileOutputStream包裹到BufferedOutputStream中,而不是使用普通的FOS。在读取或写入文件时,始终最好使用缓冲区。

此外,您不需要在循环结束后的每个数据包之后flush(),就像您的第一个示例一样。这也可以提高性能。

答案 1 :(得分:0)

您可以使用Android的itext库来创建PDF文件并保存。 For more details Read Here