Display sqlite database content in pdf format in android
Look at droidtext which a port of the iText library version 2.1.7 for Android.
There are lots of examples too. Get started with Helloworld.
public class HelloWorld { /** * Generates a PDF file with the text 'Hello World' * * @param args * no arguments needed here */ public static void main(String[] args) { System.out.println("Hello World"); // step 1: creation of a document-object Document document = new Document(); try { // step 2: // we create a writer that listens to the document // and directs a PDF-stream to a file PdfWriter.getInstance(document, new FileOutputStream(android.os.Environment.getExternalStorageDirectory() + java.io.File.separator + "droidtext" + java.io.File.separator + "HelloWorld.pdf")); // step 3: we open the document document.open(); // step 4: we add a paragraph to the document document.add(new Paragraph("Hello World")); } catch (DocumentException de) { System.err.println(de.getMessage()); } catch (IOException ioe) { System.err.println(ioe.getMessage()); } // step 5: we close the document document.close(); }}
For display content of Sqlite database into pdf you have to use itextpdf-5.2.1.jar.you can download it from here
Example code:
DatabaseHandlerofdatabase dbHandler = new DatabaseHandlerofdatabase(this); SQLiteDatabase db = dbHandler.getWritableDatabase(); Cursor c1 = db.rawQuery("SELECT * FROM tablename", null); String filename="nameoffile.pdf"; Document document=new Document(); // create the document File root = new File(Environment.getExternalStorageDirectory(), "Notes"); if (!root.exists()) { root.mkdirs(); // create root directory in sdcard } File gpxfile = new File(root,filename); // generate pdf file in that directory PdfWriter.getInstance(document,new FileOutputStream(gpxfile)); document.open(); // open the directory Paragraph p3=new Paragraph(); // to enter value you have to create paragraph and add value in it then paragraph is added into document p3.add("Username : "); document.add(p3); // now for ad table in pdf use below code PdfPTable table = new PdfPTable(3); // Code 1 // Code 2 table.addCell("CATEGORY"); table.addCell("BUDGET"); table.addCell("USED BUDGET"); // now fetch data from database and display it in pdf while (c1.moveToNext()) { // get the value from database String ex_bdgt = c1.getString(3); String used_bdgt = c1.getString(5); table.addCell(type); table.addCell(ex_bdgt); table.addCell(used_bdgt); int temp_ex=Integer.parseInt(ex_bdgt); ttlbud=ttlbud+temp_ex; int temp_used=Integer.parseInt(used_bdgt); usdbud=usdbud+temp_used; } // add table into document document.add(table); document.addCreationDate(); document.close();
I have tried Ketul Patel solution, the solution is fine in principle, but I needed to change few things in it. I changed the way I created the file in the directory, I got the idea from here, and it worked perfectly. and my final code is:
The DatabaseHelper is a class I created in my project which extends SQLiteOpenHelper. read more
public void createPdf() throws FileNotFoundException, DocumentException { String dir = Environment.getExternalStorageDirectory()+File.separator+"myLogs"; File folder = new File(dir); folder.mkdirs(); File file = new File(dir, "LogHistory.pdf"); Cursor c1 = database.rawQuery("SELECT * FROM " + DatabaseHelper.TABLE_LOG, null); Document document = new Document(); // create the document PdfWriter.getInstance(document, new FileOutputStream(file)); document.open(); Paragraph p3 = new Paragraph(); p3.add("Your Log History for \n"); document.add(p3); PdfPTable table = new PdfPTable(4); table.addCell("Date"); table.addCell("Start"); table.addCell("End"); table.addCell("Total"); while (c1.moveToNext()) { String date = c1.getString(3); String start = c1.getString(1); String end = c1.getString(2); String total = c1.getString(4); table.addCell(date); table.addCell(start); table.addCell(end); table.addCell(total); } document.add(table); document.addCreationDate(); document.close();}