通过蓝牙打印机打印pdf文件

时间:2014-07-04 07:58:55

标签: java android pdf printing bluetooth

作为新的android蓝牙连接和打印打印机中的内容。但现在能够用我的Android设备连接到蓝牙打印机。所以,我的项目要求我必须打印pdf文件的内容。以前与同一个项目我能够打印字符串变量内容。

现在随着项目需求的变化,将会有一个pdf文件打印任务。首先我在java中创建带有itext库的pdf用于pdf文件创建。所以,文件创建部分已经完成。我做了什么打印该文件生成pdf文件的字节数组。

这是代码行

FileInputStream fin=new FileInputStream(pdffile);

fileContent=new byte[(int) pdffile.length()];//file content is the byte array for the pdf file.

下一行连接到打印机的蓝牙到Android设备。

 mBTAdapter = BluetoothAdapter.getDefaultAdapter();

BluetoothDevice mdevice = mBTAdapter.getRemoteDevice(PRINTER_MAC_ID);   

            Method m = mdevice.getClass().getMethod("createRfcommSocket", new Class[] { int.class });

            mBTSocket = (BluetoothSocket) m.invoke(mdevice, 1);

            mBTSocket.connect();

使用该套接字(mBTSocket)获取OutputStream。

并将字节数组写入该OutputStream。

os.write(fileContent);
os.flush();
mBTSocket.close();

因此,当我尝试通过蓝牙打印机打印pdf文件内容时,没有任何事情发生,没有异常或应用程序崩溃,但它发出警告 getbluetoothservice()调用没有bluetoothmanagercallback 而不打印内容所以任何人都可以告诉我哪些/哪里我做错了。我也搜索这个主题,但我只有字符串打印但没有文件。 其中一个链接讲述了一些名为StarIOsdk的sdk for android for printing file.And android sdk中的另一个问题是新的打印方法逻辑是在API级别4.4中引入的,但我们将如何处理先前的API级别。这里使用的打印机是蓝牙热敏打印机(小尺寸2,纸张尺寸)。谢谢。

1 个答案:

答案 0 :(得分:1)

        mBTAdapter = BluetoothAdapter.getDefaultAdapter();

        BluetoothDevice mdevice = mBTAdapter.getRemoteDevice(PRINTER_MAC_ID);   

        Method m = mdevice.getClass().getMethod("createRfcommSocket", new Class[] { int.class });

        mBTSocket = (BluetoothSocket) m.invoke(mdevice, 1);

        mBTSocket.connect();
        Thread.sleep(100);
  

在Socket Connect之后让线程进入睡眠状态..这对我有用