How to print already downloaded PDF using Android 4.4 printing framework?
I viewed the developer documentation. but no luck. Any example would be helpful
Steps for Printing to PDF on Android DevicesChoose the menu option (the icon with three dots located on the right-hand corner of your Android device). Click "Save as PDF". Select the printer that you want to use for printing. If you can't locate it, click all printers to see the list of all connected printers.
After spend some hours on google i found the solution.
PrintManager printManager = (PrintManager) this.getSystemService(Context.PRINT_SERVICE); String jobName = this.getString(R.string.app_name) + " Document"; printManager.print(jobName, pda, null); PrintDocumentAdapter pda = new PrintDocumentAdapter(){ @Override public void onWrite(PageRange[] pages, ParcelFileDescriptor destination, CancellationSignal cancellationSignal, WriteResultCallback callback){ InputStream input = null; OutputStream output = null; try { input = new FileInputStream(file to print); output = new FileOutputStream(destination.getFileDescriptor()); byte[] buf = new byte[1024]; int bytesRead; while ((bytesRead = input.read(buf)) > 0) { output.write(buf, 0, bytesRead); } callback.onWriteFinished(new PageRange[]{PageRange.ALL_PAGES}); } catch (FileNotFoundException ee){ //Catch exception } catch (Exception e) { //Catch exception } finally { try { input.close(); output.close(); } catch (IOException e) { e.printStackTrace(); } } } @Override public void onLayout(PrintAttributes oldAttributes, PrintAttributes newAttributes, CancellationSignal cancellationSignal, LayoutResultCallback callback, Bundle extras){ if (cancellationSignal.isCanceled()) { callback.onLayoutCancelled(); return; } PrintDocumentInfo pdi = new PrintDocumentInfo.Builder("Name of file").setContentType(PrintDocumentInfo.CONTENT_TYPE_DOCUMENT).build(); callback.onLayoutFinished(pdi, true); } };
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With