Add Javascript Interface Android write pdf with iText

You use iText® under AGPL license for opensource project to create and manipulate pdf documents


    
    ...

// for iText library import this packages
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.html.simpleparser.HTMLWorker; // simple parser html
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.Paragraph;

// start code
@SuppressLint({"SetJavaScriptEnabled","JavascriptInterface"})
public class MainActivity extends Activity {
public WebView webView;
 
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main); // source activity_main.xml
webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
webView.setWebViewClient(new WebViewClient());
// important set Web Chrome Client
webView.setWebChromeClient(new WebChromeClient());
webView.loadUrl(url); //local or remote
}
// final class for save and write file in external storage
final class WebAppInterface {
        Context mContext;
 
        /** Instantiate the interface and set the context */
        WebAppInterface(Context c) {
            mContext = c;
        }
         @SuppressWarnings("deprecation")
	public void writeToPdf(String data, String filename, String tag) {
	        try {
	        	File root = android.os.Environment.getExternalStorageDirectory();
	        	File dir = new File (root.getAbsolutePath() + "/folderpdf/");
	        	dir.mkdirs();
	        	File file = new File(dir, filename + ".pdf");
	        	try {
	            	       Document document = new Document();
			       PdfWriter.getInstance(document, new FileOutputStream(file));
			       document.open();
			       @SuppressWarnings("deprecation")
                               document.add(new Paragraph(data));                               
                               // if you want to set Font and Alignment
                               // This tutoria is getting started
                               // for all advanced settings you consult documentation iText
			       /* if you want to parse html data use this code
                                  HTMLWorker htmlWorker = new HTMLWorker(document);
			          htmlWorker.parse(new StringReader(data)); */
			       document.close();
				} catch (DocumentException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
	        }
	        catch (IOException e) {
	            Log.e(tag, "File write failed: " + e.toString());
	        }
	    }
    }
 
}
// Now open html file in www folder
 






Nessun commento


You can leave the first : )