我得到的问题,打印通过蓝牙热敏打印机从pdf文件成为文本视图。
Print Pdf file via Bluetooth Printer Android我尝试了这些示例,但没有达到预期效果。
这是我当前的代码
代码文件源:
String checkout = "checkout";
String fpath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) +"/"+ checkout + ".pdf";
打印代码
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
try {
for (int readNum; (readNum = fis.read(buf)) != -1;) {
bos.write(buf, 0, readNum);
System.out.println("read " + readNum + " bytes,");
}
} catch (IOException ex) {
System.out.println("ERROR!");
}
byte[] bytesPDF = bos.toByteArray();
byte[] printformat = { 27, 33, 0 }; //try adding this print format
mService.write(printformat);
mService.write(bytesPDF);
我希望能够打印pdf文件的热蓝牙打印机。请帮助我。谢谢。
2条答案
按热度按时间rjee0c151#
问题很明显。正如我们所看到的,打印的收据带有格式化语法。它用于格式化PDF文件中的文本和图像。因此,您尝试打印的打印机不支持打印PDF文件。因此,如果可能,您应该提供兼容格式的文件,如文本文件。
想知道更多关于在蓝牙打印机中格式化文本的信息,你可以看看这篇文章here,让我知道这是否能解决你的问题。
pzfprimi2#
1.打开与打印机的套接字连接
1.发送打印机理解的编码数据
1.关闭连接
因此,这里的问题归结为什么格式的数据发送,使打印机能够理解它,并打印相应的。这取决于打印机的制造商。编码要么是有据可查的, Package 到一个SDK/驱动程序使用,或者是开源标准编码的ESC/POS通用打印机。
1.将PDF文件转换为页面的位图[]。
1.使用厂家提供的位图打印命令,逐页进行编码。
1.将此编码字符串数据传递给打印机。
例如,请查看以下GitHub Repo https://github.com/DantSu/ESCPOS-ThermalPrinter-Android中的通用ESC/POS实现