android 在热敏打印机上打印pdf文件

wbrvyc0a  于 2022-12-25  发布在  Android
关注(0)|答案(2)|浏览(534)

我得到的问题,打印通过蓝牙热敏打印机从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文件的热蓝牙打印机。请帮助我。谢谢。

rjee0c15

rjee0c151#

问题很明显。正如我们所看到的,打印的收据带有格式化语法。它用于格式化PDF文件中的文本和图像。因此,您尝试打印的打印机不支持打印PDF文件。因此,如果可能,您应该提供兼容格式的文件,如文本文件。
想知道更多关于在蓝牙打印机中格式化文本的信息,你可以看看这篇文章here,让我知道这是否能解决你的问题。

pzfprimi

pzfprimi2#

    • 热敏打印机的工作方式是**

1.打开与打印机的套接字连接
1.发送打印机理解的编码数据
1.关闭连接
因此,这里的问题归结为什么格式的数据发送,使打印机能够理解它,并打印相应的。这取决于打印机的制造商。编码要么是有据可查的, Package 到一个SDK/驱动程序使用,或者是开源标准编码的ESC/POS通用打印机。

    • 最后,要打印PDF文件,您需要执行以下操作-**

1.将PDF文件转换为页面的位图[]。
1.使用厂家提供的位图打印命令,逐页进行编码。
1.将此编码字符串数据传递给打印机。
例如,请查看以下GitHub Repo https://github.com/DantSu/ESCPOS-ThermalPrinter-Android中的通用ESC/POS实现

PrinterTextParserImg.bitmapToHexadecimalString()

相关问题