5

I have a Sqlite database in Android and I want to display its content in a PDF file, by building it dynamically in Android on pressing a Button.

I am aware with iText but I want to go with a simpler solution.. Can anyone help me with it plz!!

Name is Nilay
  • 2,743
  • 4
  • 35
  • 77

4 Answers4

4

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();
        }
}
prayagupa
  • 30,204
  • 14
  • 155
  • 192
3

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();
2

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();
}
Community
  • 1
  • 1
ALKashout
  • 21
  • 4
0

I have completed the PDF implementation in php with the help of fpdf Tutorials. With this I also got help for Pie Charts and Bar Charts for graphical representation in my pdf. Also this format simplifies for mailing our pdf file as an attachment as it could be stored as various ways.

Name is Nilay
  • 2,743
  • 4
  • 35
  • 77