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

问题描述 投票:0回答:3

我遇到问题,通过蓝牙在热敏打印机上从 pdf 文件打印变成文本视图。

通过蓝牙打印机Android打印Pdf文件我尝试过这些示例,但没有达到我的预期。

这是我当前的代码

代码文件来源:

       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文件。请帮我。谢谢你。

android bluetooth byte thermal-printer
3个回答
1
投票

问题很明确。我们可以看到打印的收据具有格式语法。它用于格式化 PDF 文件中的文本和图像。因此,您尝试打印的打印机不支持打印 PDF 文件。因此,如果可能的话,您应该以兼容的格式提供文件,例如文本文件。

要了解有关在蓝牙打印机中格式化文本的更多信息,您可以查看这篇文章这里。让我知道这是否能解决您的问题。


0
投票

热敏打印机的工作原理是

  1. 打开与打印机的套接字连接
  2. 发送打印机理解的编码数据
  3. 关闭连接

因此,这里的问题归结为要发送的数据的格式是什么,以便打印机能够理解它并进行相应的打印。这取决于打印机的制造商。这些编码要么有详细记录,打包到 SDK/驱动程序中使用,要么是 ESC/POS 通用打印机的开源标准编码。

最后,打印PDF文件需要做的是-

  1. 将 PDF 文件转换为页面的 Bitmap[]。
  2. 通过厂家提供的打印位图命令对页面进行一页一页的编码。
  3. 将此编码的字符串数据传递到打印机。

例如,请查看以下 GitHub 存储库中的通用 ESC/POS 实现 https://github.com/DantSu/ESCPOS-ThermalPrinter-Android

PrinterTextParserImg.bitmapToHexadecimalString()

0
投票

客户文案 - AEPS 提现 日期和时间:2024 年 2 月 3 日 07:23 PM 终端 ID:NSDAZ0001012307 代理编号:260784 BC 名称:Spice Money Limited(原 Spice Digital Limited) BC省地点:莫哈里 阿德哈尔编号:xxxx-xxxx-8169 注册号码:403419139209 UIDAI授权码:00 斯坦:271499 交易状态:成功 金额:卢比。 1000 响应代码:00 回复信息: 金额为卢比。已提款1000 你的帐户 。现在您当前的账户余额是 卢比。 00.00

© www.soinside.com 2019 - 2024. All rights reserved.