title: Print Pdf file via Bluetooth Printer Android
body: <p>In My project Need to print Pdf file Via Bluetooth Printer. I write a code to  print via pdf 
  Its for fine for a Text, </p>
  
  <p>But I want to Print PDF file on Bluetooth printer.</p>
  
  <p>My java Code to Print Text </p>
  
  <pre><code>    @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          lv= (ListView) findViewById(R.id.listView1);
       //   listdata(lv);
          try {
  
          // we are goin to have three buttons for specific functions
          Button openButton = (Button) findViewById(R.id.open);
          Button sendButton = (Button) findViewById(R.id.send);
          Button closeButton = (Button) findViewById(R.id.close);
          Button btnco= (Button) findViewById(R.id.btnconnect);
  
          btnco.setOnClickListener(new OnClickListener() {
  
              @Override
              public void onClick(View v) {
                  // TODO Auto-generated method stub
                  try {
                      findBT();
                      openBT();
                  } catch (Exception ex) {
                  }
              }
          });
          myLabel = (TextView) findViewById(R.id.label);
          myTextbox = (EditText) findViewById(R.id.entry);
  
          // open bluetooth connection
          openButton.setOnClickListener(new View.OnClickListener() {
              public void onClick(View v) {
                  startActivity(new Intent(MainActivity.this,NewAct.class));
              }
          });
  
          // send data typed by the user to be printed
          sendButton.setOnClickListener(new View.OnClickListener() {
              public void onClick(View v) {
                  try {
                      sendData();
                  } catch (IOException ex) {
                  }
              }
          });
  
          // close bluetooth connection
          closeButton.setOnClickListener(new View.OnClickListener() {
              public void onClick(View v) {
                  try {
                      closeBT();
                  } catch (IOException ex) {
                  }
              }
          });
  
      } catch (NullPointerException e) {
          e.printStackTrace();
      } catch (Exception e) {
          e.printStackTrace();
      }
  }
  
  /*
   * This will find a bluetooth printer device
   */
  void findBT() {
  
      try {
  
          mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
  
  
          if (mBluetoothAdapter == null) {
              myLabel.setText("No bluetooth adapter available");
              Toast.makeText(MainActivity.this, "No bluetooth  available", Toast.LENGTH_LONG).show();
           // startActivity(new Intent(MainActivity.this,NewAct.class));
          }
  
          if (!mBluetoothAdapter.isEnabled()) {
              Intent enableBluetooth = new Intent(
                      BluetoothAdapter.ACTION_REQUEST_ENABLE);
              startActivityForResult(enableBluetooth, 0);
              Toast.makeText(this, "OPen", Toast.LENGTH_LONG).show();
  
              //startActivity(new Intent(MainActivity.this,NewAct.class));
          }
  
  
          Set&lt;BluetoothDevice&gt; pairedDevices = mBluetoothAdapter
                  .getBondedDevices();
  
          if (pairedDevices.size() &gt; 0) {
  
  
              for (BluetoothDevice device : pairedDevices) {
  
                  // MP300 is the name of the bluetooth printer device
  
                  if (device.getName().equals(NewAct.printer)) {
                      //openBT();
                      mmDevice = device;
                      break;
                  }
                  else {
  
                  }
              }
          }
          {
          myLabel.setText("Bluetooth Device Found");
          try {
              // Standard SerialPortService ID
              UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
              mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);
              mmSocket.connect();
              mmOutputStream = mmSocket.getOutputStream();
              mmInputStream = mmSocket.getInputStream();
  
              beginListenForData();
  
              myLabel.setText("Bluetooth Opened");
          } catch (NullPointerException e) {
              e.printStackTrace();
          }
  
          }
      } catch (NullPointerException e) {
          e.printStackTrace();
      } catch (Exception e) {
          e.printStackTrace();
      }
  }
  
  /*
   * Tries to open a connection to the bluetooth printer device
   */
  void openBT() throws IOException {
      try {
          // Standard SerialPortService ID
          UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
          mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);
          mmSocket.connect();
          mmOutputStream = mmSocket.getOutputStream();
          mmInputStream = mmSocket.getInputStream();
  
          beginListenForData();
  
          myLabel.setText("Bluetooth Opened");
      } catch (NullPointerException e) {
          e.printStackTrace();
      } catch (Exception e) {
          e.printStackTrace();
      }
  }
  
  /*
   * After opening a connection to bluetooth printer device, 
   * we have to listen and check if a data were sent to be printed.
   */
  void beginListenForData() {
      try {
          final Handler handler = new Handler();
  
          // This is the ASCII code for a newline character
          final byte delimiter = 10;
  
          stopWorker = false;
          readBufferPosition = 0;
          readBuffer = new byte[1024];
  
          workerThread = new Thread(new Runnable() {
              public void run() {
                  while (!Thread.currentThread().isInterrupted()
                          &amp;&amp; !stopWorker) {
  
                      try {
  
                          int bytesAvailable = mmInputStream.available();
                          if (bytesAvailable &gt; 0) {
                              byte[] packetBytes = new byte[bytesAvailable];
                              mmInputStream.read(packetBytes);
                              for (int i = 0; i &lt; bytesAvailable; i++) {
                                  byte b = packetBytes[i];
                                  if (b == delimiter) {
                                      byte[] encodedBytes = new byte[readBufferPosition];
                                      System.arraycopy(readBuffer, 0,
                                              encodedBytes, 0,
                                              encodedBytes.length);
                                      final String data = new String(
                                              encodedBytes, "US-ASCII");
                                      readBufferPosition = 0;
  
                                      handler.post(new Runnable() {
                                          public void run() {
                                              myLabel.setText(data);
                                          }
                                      });
                                  } else {
                                      readBuffer[readBufferPosition++] = b;
                                  }
                              }
                          }
  
                      } catch (IOException ex) {
                          stopWorker = true;
                      }
  
                  }
              }
          });
  
          workerThread.start();
      } catch (NullPointerException e) {
          e.printStackTrace();
      } catch (Exception e) {
          e.printStackTrace();
      }
  }
  
  /*
   * This will send data to be printed by the bluetooth printer
   */
  void sendData() throws IOException {
      try {
  
          // the text typed by the user
          String msg = myTextbox.getText().toString();
          msg += "\n";
  
          mmOutputStream.write(msg.getBytes());
  
          // tell the user data were sent
          myLabel.setText("Data Sent");
  
      } catch (NullPointerException e) {
          e.printStackTrace();
      } catch (Exception e) {
          e.printStackTrace();
      }
  }
  
  /*
   * Close the connection to bluetooth printer.
   */
  void closeBT() throws IOException {
      try {
          stopWorker = true;
          mmOutputStream.close();
          mmInputStream.close();
          mmSocket.close();
          myLabel.setText("Bluetooth Closed");
      } catch (NullPointerException e) {
          e.printStackTrace();
      } catch (Exception e) {
          e.printStackTrace();
      }
  }
  
   public void listdata(ListView lv){
       try{
        pairedDevices = mBluetoothAdapter.getBondedDevices();
  
        ArrayList&lt;String&gt; list = new ArrayList&lt;String&gt;();
        for(BluetoothDevice bt : pairedDevices)
           list.add(bt.getName());
  
        Toast.makeText(getApplicationContext(),"Showing Paired Devices",
        Toast.LENGTH_SHORT).show();
        @SuppressWarnings("unchecked")
      final ArrayAdapter&lt;String&gt; adapter = new ArrayAdapter&lt;String&gt;
        (this,android.R.layout.simple_list_item_1, list);
        lv.setAdapter(adapter);
       }catch(Exception e)
       {
           Toast.makeText(this, "error"+e, Toast.LENGTH_LONG).show();
       }
  
     }
  </code></pre>
  
  <p>I don't have Idea How to Pass Pdf file for print to Bluetooth Printer</p>
  
  <p>Please Help Me How i can do this</p>
  
  <p>Thanks In Advance.</p>