Печать PDF-файла через принтер Bluetooth

#java #android #pdf #printing #bluetooth

#java #Android #PDF #печать #bluetooth

Вопрос:

Как новое для Android подключение по Bluetooth и печать содержимого на принтере.Но теперь я могу подключиться к принтеру Bluetooth с моего устройства Android.Итак, в соответствии с требованиями моего проекта я должен распечатать содержимое PDF-файла.Ранее в том же проекте я мог печатать содержимое строковой переменной.

Теперь с изменением требований проекта появится задача печати PDF-файла.Сначала я создаю PDF с помощью библиотеки itext на Java для создания PDF-файла.Итак, часть создания файла выполнена.И что я сделал для печати этого файла, так это сгенерировал массив байтов для файла pdf.

вот строка кода

 FileInputStream fin=new FileInputStream(pdffile);

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

Следующая строка — подключение принтера по Bluetooth к устройству 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) получаем выходной поток.

и чем записывать массив байтов в этот выходной поток.

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

итак, когда я попытался распечатать содержимое PDF-файла через принтер Bluetooth, ничего не произошло, нет исключения или сбоя приложения, но выдается предупреждение getbluetoothservice () вызывается без обратного вызова bluetoothmanagercallback и не выводит содержимое на бумагу.Итак, любой может сказать мне, что / где я делаю неправильно.Я также ищу эту тему, но все, что я получил, касается только печати строк, но без файла.
Одна из ссылок рассказывает о каком-то sdk под названием StarIOsdk для Android для печати файла.И еще одна проблема в Android sdk заключается в том, что новый метод печати представлен на уровне API 4.4, но как мы будем это делать на предыдущем уровне API.Используемый здесь принтер — термопринтер Bluetooth (небольшой размер бумаги размером 2 дюйма).Заранее спасибо.

Комментарии:

1. как вы решили свою проблему .. у меня также есть аналогичное требование

Ответ №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);
  

После подключения к сокету переводите поток в спящий режим..У меня это сработало