Blog


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
 






Text To Speech Api HTML5 – Android

New useful function bridge between HTML5 and Android to listen text from input textarea

package com.example.tts;
// here imports in Eclipse command "Source->Organize Imports"
.......
@SuppressLint({ "SetJavaScriptEnabled", "JavascriptInterface" })
public class MainActivity extends Activity implements OnInitListener {
       private TextToSpeech tts;
       private WebView ttsweb;
        @Override
   public void onConfigurationChanged(Configuration newConfig){
	    super.onConfigurationChanged(newConfig);
	}
	@SuppressWarnings("deprecation")
   protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);	
	setContentView(R.layout.activity_main);
        tts = new TextToSpeech(this, this);
        ttsweb = (WebView) findViewById(R.id.webtweetsfeeds);
        ttsweb.getSettings().setJavaScriptEnabled(true);
	ttsweb.getSettings().setLoadWithOverviewMode(false);
	ttsweb.getSettings().setUseWideViewPort(false);
	ttsweb.getSettings().setBuiltInZoomControls(false);
	ttsweb.getSettings().setPluginState(WebSettings.PluginState.ON);
	ttsweb.getSettings().setRenderPriority(RenderPriority.HIGH);
	ttsweb.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
        ttsweb.setWebChromeClient(new WebViewChromeClient());
        ttsweb.setWebViewClient(new WebViewClient());
        // bridge interface java/javascript
        ttsweb.addJavascriptInterface(new WebAppInterface(this), "Android");
	ttsweb.loadUrl("file:///android_asset/www/index.html");
   }
  final class WebAppInterface {
	    Context mContext;
	   /*My interface*/
	    /** Instantiate the interface and set the context */
	    WebAppInterface(Context c) {
	        mContext = c;
	    }
	    public void ttsInput(String inputText, String setLang){
	    	tts.setLanguage(new Locale(setLang));
	    	Toast.makeText(getApplicationContext(), tts.toString(), 
	    		      Toast.LENGTH_SHORT).show();
	    	tts.speak(inputText, TextToSpeech.QUEUE_FLUSH, null);	    	
	    }
	    public void ttsStop(){
	    	if (tts != null) {
	            tts.stop();
	           // tts.shutdown();
	        }	
	    }
	   	    
	}
       public void onInit(int status) {
		// TODO Auto-generated method stub
		return;
	}
}
// Now open html file index in asset/www main folder project Android and to add this code:
// javascript functions 
function tts(){
	try{
		var ttsinout = document.getElementById("textarea").value;
		var setLanguage = document.getElementById("setlanguage").value;
		Android.ttsInput(ttfeeds, setLanguage);
	} catch(e){
		alert("Error Description: " + e.message);
	}
}

function stoptts(){
	try{
		Android.ttsStop();
	} catch(e){
		alert("Error Description: " + e.message);
	}
}
document.getElementById("ttstop").addEventListener("click", stoptts, false);
document.getElementById("tts").addEventListener("click", tts, false);
// end javascript

// start html 







Search Page Javascript


//open html file and insert this items





Simple Html Editor

Spesso le migliori idee affiorano lontano dal nostro computer o notebook e credo che un ulteriore vantaggio della praticità offerta dagli smartphones o device mobile è quello di poterci permettere di concretizzarle in maniera immediata lontano dalla nostra workstation. Se lavori nel settore del web marketing e desideri realizzare velocemente con un semplice e intuitivo wysiwyg mobile web editor le tue DEM e Landing Page o altre pagine affini, Simple Html Editor sono convinto può corrispondere alle tue aspettative. Hai la possibilità di caricare immagini con un semplice bottone di upload prelevandole direttamente dall’external storage del tuo smartphone o tablet, inserire link, formattare, colorare e dimensionare il testo e perfino editare direttamente con il linguaggio html servendoti del corrispondente pulsante incluso nella barra degli strumenti del software che attiva la textarea per la progammazione. Infine puoi salvare o riaprire il tuo lavoro quando lo desideri grazie alle api di scrittura e lettura dei file offerte dalla libreria Android. Se desideri ricevere maggiori informazioni clicca sul badge in basso per approdare nella pagina di presentazione dell’app su Google Play Store.

Update 03.07.2014: Nuova interfaccia grafica, nuove funzioni e nel complesso un consistente miglioramento dell’intera applicazione

Get it on Google Play




Text To Speech in pure js

Text To Speech in pure javascript