Thursday, March 01, 2018

Print/Save PDF from webview

Print/Save PDF from Webview is usable when you want to save print webview content. you can see it in this tutorial.






Steps to use Print/Save PDF from Webview in your project.


  1. Crate a project(Print/Save PDF from Webview) in android studio.

  2. Create a Activity MainActivity.Java and update it-

    package com.pankaj.savepdffromwebview;
    import android.content.Context;
    import android.os.Bundle;
    import android.print.PrintAttributes;
    import android.print.PrintDocumentAdapter;
    import android.print.PrintManager;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    public class MainActivity extends AppCompatActivity {
    
        //create object of webView
        private WebView myWebView;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //initialize webview
            myWebView = findViewById(R.id.myWebView);
    
            //add webview client to handle event of loading
            myWebView.setWebViewClient(new WebViewClient() {
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    return false;
                }
    
                @Override
                public void onPageFinished(WebView view, String url) {
    
                    //if page loaded successfully then show print button
                    findViewById(R.id.fab).setVisibility(View.VISIBLE);
                }
            });
    
            //prepare your html content which will be show in webview
            String htmlDocument = "<html><body>" +
                    "<h1>Webview Print Test </h1>" +
                    "<h2>I am Webview</h2>" +
                    "<p> By PointOfAndroid</p>" +
                    "<p> This is some sample content.</p>" +
                    "<p> By PointOfAndroid</p>" +
                    "<p> This is some sample content.</p>" +
                    "<p> By PointOfAndroid</p>" +
                    "<p> This is some sample content.</p>" +
                    "" +
                    "" +
                    "" + "Put your content here" +
                    "" +
                    "" +
                    "</body></html>";
    
            //load your html to webview
            myWebView.loadData(htmlDocument, "text/HTML", "UTF-8");
        }
    
        //create a function to create the print job
        private void createWebPrintJob(WebView webView) {
    
            //create object of print manager in your device
            PrintManager printManager = (PrintManager) this.getSystemService(Context.PRINT_SERVICE);
    
            //create object of print adapter
            PrintDocumentAdapter printAdapter = webView.createPrintDocumentAdapter();
    
            //provide name to your newly generated pdf file
            String jobName = getString(R.string.app_name) + " Print Test";
    
            //open print dialog
            printManager.print(jobName, printAdapter, new PrintAttributes.Builder().build());
        }
    
        //perform click pdf creation operation on click of print button click
        public void printPDF(View view) {
            createWebPrintJob(myWebView);
        }
    }

  3. Create a xml activity_main.xml and update it-

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.pankaj.savepdffromwebview.MainActivity">
    
        <!--webview-->
        <WebView
            android:id="@+id/myWebView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"></WebView>
    
        <!--floating action button to print the webview content-->
        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_gravity="bottom|end"
            android:layout_margin="20dp"
            android:onClick="printPDF"
            android:src="@drawable/print"
            android:visibility="gone" />
    </RelativeLayout>
    
    
  4. All the application development process with Print/Save PDF from webview has completed, Now run the app and look the screen.









  5. Good bye, Thanks to read this blog.

11 comments: