Android 在打印机上打印文本

标签 android network-printers

我正在开发一个餐厅应用程序,可以在顾客购买食物后打印收据。我在应用程序中添加了一个配置屏幕,管理员用它来配置打印机。管理员可以打印一个测试页来测试他是否输入了正确的ip和端口。这是我打印测试页的代码:

private class PrintTask extends AsyncTask<Printer, Boolean, String> {

    @Override
    protected String doInBackground(Printer... params) {

        try {
            publishProgress(true);
            Socket sock = new Socket(params[0].getIp(), Integer.parseInt(params[0].getPort()));

            PrintWriter oStream = new PrintWriter(sock.getOutputStream());
            oStream.printf("--------------------------------\r\n");
            oStream.printf("***        TEST PRINT       ***\r\n");
            oStream.printf("You have configured your \n\r");
            oStream.printf(params[0].getName());
            oStream.printf("\r\nprinter successfully\n\r");
            oStream.printf("|           Thanks             |\r\n");
            oStream.printf("--------------------------------\r\n");
            oStream.close();
            sock.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        publishProgress(false);
        return "";
    }

    @Override
    protected void onProgressUpdate(Boolean... values) {
        // TODO Auto-generated method stub
        super.onProgressUpdate(values);
        if(!values[0]) {
            waitView.setVisibility(View.GONE);
        }
        else {
            waitView.setVisibility(View.VISIBLE);
        }
    }

}

问题是,如果我在网络打印机(不连接任何 PC 的独立打印机)上打印,它会正确打印文本。这里我使用的是 ip 和默认端口 9100。但是当我打印到连接到 PC 的共享打印机时,它无法打印。知道吗,我哪里做错了......???

最佳答案

根据您的描述,独立打印机似乎正在您给定的端口上运行某种“文本打印服务”。所以看起来您发送到此端口的所有内容都将打印为文本。

而当您的 Windows 机器上有“共享”打印机时,它是使用 Windows 打印机服务或类似的东西实现的。它不再只是简单的套接字/端口,您可以在其中编写 ASCII 文本。

关于Android 在打印机上打印文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17146159/

相关文章:

android - 三星 Galaxy S3 未显示在 android visual studio 2012 的选择设备列表单声道中

Java - 列出 LAN 上的所有网络打印机

java - ClassNotFoundException 没有找到类“com.google.android.gms.common.internal.zzbq

android - 有没有办法拦截发送到不同传输的Android SMS?

php - 在网络打印机上无人值守打印文档

python - 如何在 python 中将打印作业发送到打印机

Windows 中的 Java 文档打印

c# - 如何使用 C# 更改打印机的端口名称

java - Android 工具链上没有可链接的 JNI 库

android - Firebase Cloud Messaging Android 接收静默推送通知