android - 将收据打印到文件

标签 android image file pdf printing

我可以通过热敏打印机打印收据(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/

相关文章:

java - 如何将(添加)邻近警报的 Intent 传递到广播接收器中?

html - 创建创建声音HTML的图像按钮

eclipse中的java文件相对路径

c++ - 遍历文件夹中的文件 (C++)

java.lang.RuntimeException : setDataSource failed: status = 0xFFFFFFED in android? 错误

java - 删除应用程序时是否删除与应用程序关联的共享首选项?

Android 奇怪的跨设备行为

image - 将 JPanel 保存为图像

javascript - 使用查询参数缓存获取的破坏图像

android - 在授予权限的 Android SD 卡上创建文件时出现 IO 异常