android - 发送PCL命令到蓝牙打印机

标签 android pdf printing bluetooth printer-control-language

我制作了 android 应用程序,它将向 BT 打印机发送 PCL 命令( HP Officejet 100 )。问题是当我发送字符串数据(PCL 命令)时,打印机无法识别这些命令并像普通字符串一样打印所有这些命令。知道为什么打印机不识别命令吗?我的完整代码在这里:CODE

我还尝试将字符集更改为 US-ASCII、UTF-8,但无法识别 PCL 命令。

第二个问题:有什么方法可以将 PDF 文件转换为 PCL 或当我需要在此打印机上打印 PDF 文件时如何做?

现在我可以打印字符串,但无法打印 pdf 或图像等,我找到了如何做到这一点的方法。感谢您的帮助。

部分代码:

    void sendCustomData() throws IOException {
    try {
        String msg =
                "<ESC>%-12345X@PJL COMMENT *Start Job* <CR><LF>\n" +
                        "@PJL JOB NAME = \"Sample Job #1\" <CR><LF>\n" +
                        "@PJL SET COPIES = 1 <CR><LF>\n" +
                        "@PJL SET RET = OFF <CR><LF>\n" +
                        "@PJL ENTER LANGUAGE = PCL <CR><LF>\n" +
                        "<ESC>E. . . . PCL job . . . .<ESC>E\n" +
                        "~<ESC>%-12345X@PJL <CR><LF>\n" +
                        "@PJL EOJ<CR><LF>\n" +
                        "<ESC>%-12345X";

        mOutputStream.write(msg.getBytes("ASCII"));
        tvStatus.setText("Custom data sent");
    } catch (NullPointerException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        closeBT();
        Toast.makeText(this, "BT conn closed", Toast.LENGTH_SHORT).show();
    }
}

最佳答案

您不应该使用字符串文字“< ESC > ”,因为它需要 ASCII/UTF-8 转义字符(十进制 27 或十六进制 1B)。相反,您应该声明一个 char 变量:

公共(public)最终静态字符CHAR_ESC = 0x1B;

并使用它来代替

字符串消息 = CHAR_ESC + "%-12345X@PJL COMMENT 开始作业\n"+ ...

关于android - 发送PCL命令到蓝牙打印机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24408380/

相关文章:

java - 我可以使用 iText 在我的 Swing 应用程序中呈现 PDF 吗?

java - java实际上是如何在屏幕上打印的

android - 将单声道转换为立体声

java - .length() 与 .getText().length() 与 .getText().toString().length()

c# - 将gridview转换为itextsharp表并使用asp.net生成pdf

swift - 如何有效地将 PDF 转换为 PNG?

python - 当我在 python+jupyter 中使用 print 时仍然显示引号

c++ - 按行、列和深度顺序打印多维 vector

android - adb shell 中的制表符补全

android - Google 登录无法正常工作