Home » Android » How to create PDF file using iText or some other library on android?

How to create PDF file using iText or some other library on android?

Posted by: admin June 15, 2020 Leave a comment

Questions:

How to create PDF file using iText or some other library on android?

Is there any tutorial on iText for android?

Thanks

How to&Answers:

You can use iText to create PDFs. Use the latest version (5.1.3) and include only the itextpdf-5.1.3.jar in the build path. You can use something like this to accomplish the pdf creation.

Document document = new Document();
file = Environment.getExternalStorageDirectory().getPath() + "/Hello.pdf"
PdfWriter.getInstance(document,new FileOutputStream(file));
document.open();
Paragraph p = new Paragraph("Hello PDF");
document.add(p);
document.close();

Also, don’t forget to use the permission to write to external storage in the manifest.xml.

Answer:

It’s Easy,For example

Here the Code in my reporsitory

gradle.build

compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.madgag:scpkix-jdk15on:1.47.0.1'
compile 'com.itextpdf:itextpdf:5.0.6'

activity_main.xml

 <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.hackro.itext.MainActivity">

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btnwrite"
        android:text="PDF"
        android:onClick="GeneratePDF"
        />
    </RelativeLayout>

MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.itextpdf.text.pdf.BaseFont;
import java.io.File;

public class MainActivity extends Activity {

    private static final String LOG_TAG = "GeneratePDF";


    private BaseFont bfBold;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);



    }


    public void GeneratePDF(View view)
    {
        // TODO Auto-generated method stub
        String filename = "david";
        String filecontent = "Contenido";
        Metodos fop = new Metodos();
        if (fop.write(filename, filecontent)) {
            Toast.makeText(getApplicationContext(),
                    filename + ".pdf created", Toast.LENGTH_SHORT)
                    .show();
        } else {
            Toast.makeText(getApplicationContext(), "I/O error",
                    Toast.LENGTH_SHORT).show();
        }
    }

  }

Metodos.java

 import android.util.Log;

    import com.itextpdf.text.BaseColor;
    import com.itextpdf.text.Document;
    import com.itextpdf.text.DocumentException;
    import com.itextpdf.text.Element;
    import com.itextpdf.text.Font;
    import com.itextpdf.text.Paragraph;
    import com.itextpdf.text.Phrase;
    import com.itextpdf.text.pdf.PdfPCell;
    import com.itextpdf.text.pdf.PdfPTable;
    import com.itextpdf.text.pdf.PdfWriter;

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;

    /**
     * Created by hackro on 24/11/15.
     */
    public class Metodos {


        public Boolean write(String fname, String fcontent) {
            try {
                String fpath = "/sdcard/" + fname + ".pdf";
                File file = new File(fpath);

                if (!file.exists()) {
                    file.createNewFile();
                }

                Font bfBold12 = new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.BOLD, new BaseColor(0, 0, 0));
                Font bf12 = new Font(Font.FontFamily.TIMES_ROMAN, 12);


                Document document = new Document();

                PdfWriter.getInstance(document,
                        new FileOutputStream(file.getAbsoluteFile()));
                document.open();

                document.add(new Paragraph("Sigueme en Twitter!"));

                document.add(new Paragraph("@DavidHackro"));
                document.close();

                return true;
            } catch (IOException e) {
                e.printStackTrace();
                return false;
            } catch (DocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return false;
            }
        }}

Result

Good Luck

Answer:

This is my sample coding for creating pdf file with text and image
content using Itext library and to store the pdf file in the external
Storage location. The only thing is you need to download the itext
library and add it into your project.

private void createPdf() {
                // TODO Auto-generated method stub
                com.itextpdf.text.Document document = new com.itextpdf.text.Document();

                 try {
                        String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/vindroid";

                        File dir = new File(path);
                            if(!dir.exists())
                                dir.mkdirs();

                        Log.d("PDFCreator", "PDF Path: " + path);


                        File file = new File(dir, "sample.pdf");
                        FileOutputStream fOut = new FileOutputStream(file);

                        PdfWriter.getInstance(document, fOut);

                        //open the document
                        document.open();


                        Paragraph p1 = new Paragraph("Sample PDF CREATION USING IText");
                        Font paraFont= new Font(Font.FontFamily.COURIER);
                        p1.setAlignment(Paragraph.ALIGN_CENTER);
                        p1.setFont(paraFont);

                         //add paragraph to document    
                         document.add(p1);

                         Paragraph p2 = new Paragraph("This is an example of a simple paragraph");
                         Font paraFont2= new Font(Font.FontFamily.COURIER,14.0f,0, CMYKColor.GREEN);
                         p2.setAlignment(Paragraph.ALIGN_CENTER);
                         p2.setFont(paraFont2);

                         document.add(p2);

                         ByteArrayOutputStream stream = new ByteArrayOutputStream();
                         Bitmap bitmap = BitmapFactory.decodeResource(getBaseContext().getResources(), R.drawable.ic_launcher);
                         bitmap.compress(Bitmap.CompressFormat.JPEG, 100 , stream);
                         Image myImg = Image.getInstance(stream.toByteArray());
                         myImg.setAlignment(Image.MIDDLE);

                         //add image to document
                         document.add(myImg);




                 } catch (DocumentException de) {
                         Log.e("PDFCreator", "DocumentException:" + de);
                 } catch (IOException e) {
                         Log.e("PDFCreator", "ioException:" + e);
                 } 
                 finally
                 {
                         document.close();
                 }

            }      

Answer:

I have used iText in a java swing application – it worked well to create some basic PDF files. The code goes something like this:

 @Override public void buildPDF(List<Folder> folders) { Document document = new Document(); String fname = ""; boolean open = false; try { // step 2: // we create a writer that listens to the document // and directs a PDF-stream to a file fname = filename(getName()) + "-" + filename(getDataset().getName()) + ".pdf"; PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(fname)); for (int i = 0; i < folders.size(); i++ ) { // grab the folder LIFolder f = (LIFolder) folders.get(i); if (f == null) continue; open = true; break; } // we have no valid folders if (folders.size() > 0 && !open) { // they selected an empty row javax.swing.JOptionPane.showMessageDialog(null, BUNDLE.getString("report-none-selected"), BUNDLE.getString("report-none-selected-title"), javax.swing.JOptionPane.ERROR_MESSAGE); return; } if (folders.size() == 0) { // get all folders from dataset folders = FolderFinder.findAll(getSession(), getDataset()); } open = false; for (int i = 0; i < folders.size(); i++ ) { // grab the folder LIFolder f = (LIFolder) folders.get(i); if (f == null) continue; if (!open) { open = true; document.open(); } Paragraph p = new Paragraph(BUNDLE.getString("report-heading-summary-main"), getPageHeadingFont()); p.setAlignment("center"); document.add(p); p = new Paragraph(BUNDLE.getString("report-heading-summary-main-sub"), this.pageHeadingFont1); p.setAlignment("center"); document.add(p); blankLine(document); drawLine(writer); /////////////////////////////////////////////////////////////////////////////////////////////////// // Primary Statement Details /////////////////////////////////////////////////////////////////////////////////////////////////// p = new Paragraph("Primary Statement Details", this.pageHeadingFont2); p.setAlignment("center"); document.add(p); blankLine(document); PdfPTable table = new PdfPTable(4); table.addCell(new BorderlessCell(new Paragraph("Dataset:", getFieldHeadingFont()))); BorderlessCell cell = new BorderlessCell(new Paragraph(getDataset().getName(), getTextFont())); cell.setColspan(3); table.addCell(cell); table.addCell(new BorderlessCell(new Paragraph("Data Entry Clerk:", getFieldHeadingFont()))); cell = new BorderlessCell(new Paragraph( (f.getDataEntryClerk() != null ? f.getDataEntryClerk().toDescriptionPathString() : emptyIfNull(null)), getTextFont())); cell.setColspan(3); table.addCell(cell); table.setWidthPercentage(100); cell = new BorderlessCell(new Paragraph("Statement Number:", getFieldHeadingFont())); table.addCell(cell); table.addCell(new BorderlessCell(new Paragraph(f.getReferenceId(), getTextFont()))); table.addCell(new BorderlessCell(new Paragraph("Statement Date:", getFieldHeadingFont()))); String strDate = ""; java.util.Date date = f.getStatementDate(); if (date != null) { SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy"); strDate = formatter.format(date); } table.addCell(new BorderlessCell(new Paragraph(strDate, getTextFont()))); table.addCell(new BorderlessCell(new Paragraph("Statement Location:", getFieldHeadingFont()))); cell = new BorderlessCell(new Paragraph(emptyIfNull(f.getTakerLocation()), getTextFont())); cell.setColspan(3); table.addCell(cell); table.addCell(new BorderlessCell(new Paragraph("Statement keywords:", getFieldHeadingFont()))); cell = new BorderlessCell(new Paragraph(emptyIfNull(f.getKeywords()), getTextFont())); cell.setColspan(3); table.addCell(cell); document.add(table); /////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// // Statement Giver's Details /////////////////////////////////////////////////////////////////////////////////////////////////// LIPerson p01 = null; Set<Actor> actors = f.getActors(); Iterator iter = actors.iterator(); while (iter.hasNext()) { Actor actor = (Actor) iter.next(); if (actor instanceof LIPerson) { LIPerson person = (LIPerson) actor; if (person.getReferenceId().toString().equalsIgnoreCase("p01") ) { p01 = person; break; } } } blankLine(document); drawLine(writer); p = new Paragraph(new Chunk("Statement Giver's Details", this.pageHeadingFont2)); p.setAlignment("center"); document.add(p); java.util.ArrayList giver = new java.util.ArrayList(); if (p01 != null) giver.add(p01); table = new PdfPTable(2); table.setWidthPercentage(100f); table.addCell(new BorderlessCell(new Paragraph("Name of Statement Giver:", getFieldHeadingFont()))); table.addCell(new BorderlessCell(new Paragraph(ActorsToString(giver), getTextFont()))); table.addCell(new BorderlessCell(new Paragraph("Sex:", getFieldHeadingFont()))); if (p01 == null) table.addCell(new BorderlessCell(new Paragraph(emptyIfNull("TBD"), getTextFont()))); else table.addCell(new BorderlessCell(new Paragraph((p01.getSex() != null ? p01.getSex().toString() : ""), getTextFont()))); table.addCell(new BorderlessCell(new Paragraph("Tribe:", getFieldHeadingFont()))); if (p01 == null) table.addCell(new BorderlessCell(new Paragraph(emptyIfNull(null), getTextFont()))); else table.addCell(new BorderlessCell( new Paragraph((p01.getEthnicityOrTribe() != null ? p01.getEthnicityOrTribe().toDescriptionPathString() : emptyIfNull(null)), getTextFont()))); table.addCell(new BorderlessCell(new Paragraph("Nationality:", getFieldHeadingFont()))); if (p01 == null) table.addCell(new BorderlessCell(new Paragraph(emptyIfNull(null), getTextFont()))); else table.addCell(new BorderlessCell( new Paragraph((p01.getNationality() != null ? p01.getNationality().toDescriptionPathString() : emptyIfNull(null)), getTextFont()))); table.addCell(new BorderlessCell(new Paragraph("Marital Status:", getFieldHeadingFont()))); table.addCell(new BorderlessCell(new Paragraph(emptyIfNull(f.getMaritalStatus()), getTextFont()))); table.addCell(new BorderlessCell(new Paragraph("Education Level:", getFieldHeadingFont()))); table.addCell(new BorderlessCell(new Paragraph(emptyIfNull(f.getEducationLevel()), getTextFont()))); table.addCell(new BorderlessCell(new Paragraph("County of Origin:", getFieldHeadingFont()))); table.addCell(new BorderlessCell(new Paragraph(emptyIfNull(f.getCountyOfOrigin()), getTextFont()))); table.addCell(new BorderlessCell(new Paragraph("Mother's Name:", getFieldHeadingFont()))); table.addCell(new BorderlessCell(new Paragraph(emptyIfNull(f.getMothersName()), getTextFont()))); table.addCell(new BorderlessCell(new Paragraph("Father's Name:", getFieldHeadingFont()))); table.addCell(new BorderlessCell(new Paragraph(emptyIfNull(f.getFathersName()), getTextFont()))); table.addCell(new BorderlessCell(new Paragraph("# of Dependents:", getFieldHeadingFont()))); table.addCell(new BorderlessCell(new Paragraph(Integer.toString(f.getNumDependents()), getTextFont()))); table.addCell(new BorderlessCell(new Paragraph("Phone Number:", getFieldHeadingFont()))); table.addCell(new BorderlessCell(new Paragraph(emptyIfNull(f.getPhoneNumber()), getTextFont()))); document.add(table); /////////////////////////////////////////////////////////////////////////////////////////////////// // Summary /////////////////////////////////////////////////////////////////////////////////////////////////// blankLine(document); drawLine(writer); p = new Paragraph(new Chunk("Summary", this.pageHeadingFont2)); p.setAlignment("center"); document.add(p); p = new Paragraph(new Chunk(emptyIfNull(f.getSourceSummary()), getTextFont())); document.add(p); /////////////////////////////////////////////////////////////////////////////////////////////////// // Incident(s) /////////////////////////////////////////////////////////////////////////////////////////////////// Set<Act> acts = f.getActs(); if (acts.size() > 0) { // sort them by id Hashtable map = new Hashtable(); Iterator it = acts.iterator(); String[] ids = new String[acts.size()]; int x = 0; while (it.hasNext()) { LIAct act = (LIAct) it.next(); String index = Integer.toString(act.getId()); map.put(index, act); ids[x++] = index; } java.util.Arrays.sort(ids); blankLine(document); drawLine(writer); p = new Paragraph(new Chunk("Act(s)", this.pageHeadingFont2)); p.setAlignment("center"); document.add(p); blankLine(document); table = new PdfPTable(4); table.setWidthPercentage(100); for (int y = 0; y < ids.length; y++) { LIAct act = (LIAct) map.get(ids[y]); table.addCell(new BorderlessCell(new Paragraph("Act ID:", getFieldHeadingFont()))); cell = new BorderlessCell(new Paragraph(act.getReferenceId(), getTextFont())); cell.setColspan(3); table.addCell(cell); table.addCell(new BorderlessCell(new Paragraph("Start Date:", getFieldHeadingFont()))); table.addCell(new BorderlessCell(new Paragraph((act.getWhen() != null ? act.getWhen().toString():""), getTextFont()))); table.addCell(new BorderlessCell(new Paragraph("End Date:", getFieldHeadingFont()))); table.addCell(new BorderlessCell(new Paragraph((act.getUntil() != null?act.getUntil().toString():""), getTextFont()))); table.addCell(new BorderlessCell(new Paragraph("Location of act:", getFieldHeadingFont()))); p = new Paragraph(emptyIfNull(act.getWhere().toString()), getTextFont()); p.setAlignment(Paragraph.ALIGN_LEFT); cell = new BorderlessCell(p); cell.setColspan(3); table.addCell(cell); table.addCell(new BorderlessCell(new Paragraph("Precise Location:", getFieldHeadingFont()))); p = new Paragraph(emptyIfNull(act.getPreciseLocation()), getTextFont()); p.setAlignment(Paragraph.ALIGN_LEFT); cell = new BorderlessCell(p); cell.setColspan(3); table.addCell(cell); table.addCell(new BorderlessCell(new Paragraph("Violation:", getFieldHeadingFont()))); p = new Paragraph(emptyIfNull(act.getViolation().toDescriptionPathString()), getTextFont()); p.setAlignment(Paragraph.ALIGN_LEFT); cell = new BorderlessCell(p); cell.setColspan(3); table.addCell(cell); table.addCell(new BorderlessCell(new Paragraph("Description:", getFieldHeadingFont()))); p = new Paragraph(emptyIfNull(act.getDescriptionLocation()), getTextFont()); p.setAlignment(Paragraph.ALIGN_LEFT); cell = new BorderlessCell(p); cell.setColspan(3); table.addCell(cell); // add empty cell cell = new BorderlessCell(new Paragraph("")); cell.setColspan(4); table.addCell(cell); cell = new BorderlessCell(new Paragraph("")); cell.setColspan(4); table.addCell(cell); } document.add(table); } ///////////////////////////////////////////////////////////////////////////////////////////////// // Victims ///////////////////////////////////////////////////////////////////////////////////////////////// List<Actor> victims = this.getAllVictims(f); if (!victims.isEmpty()) { blankLine(document); drawLine(writer); String strVictims = ActorsToString(victims); p = new Paragraph(new Chunk("Victim(s)", this.pageHeadingFont2)); p.setAlignment("center"); document.add(p); p = new Paragraph(new Chunk("Name(s) of Victim(s): ", getFieldHeadingFont())); p.add(new Chunk(strVictims, getTextFont())); document.add(p); String gender = ActorsToGender(victims); p = new Paragraph(new Chunk("Gender: ", getFieldHeadingFont())); p.add(new Chunk(gender, getTextFont())); document.add(p); } ///////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////// // Perps ///////////////////////////////////////////////////////////////////////////////////////////////// List<Actor> perps = this.getAllPerpetrators(f); if (!perps.isEmpty()) { blankLine(document); drawLine(writer); p = new Paragraph(new Chunk("Perpetrator(s)", this.pageHeadingFont2)); p.setAlignment("center"); document.add(p); String strPerps = ActorsToString(perps); p = new Paragraph(new Chunk("Name(s) of alleged perpetrator(s): ", getFieldHeadingFont())); p.add(new Chunk(strPerps, getTextFont())); document.add(p); } ///////////////////////////////////////////////////////////////////////////////////////////////// document.newPage(); } } catch (DocumentException de) { System.err.println(de.getMessage()); } catch (java.io.IOException ioe) { System.err.println(ioe.getMessage()); } // step 5: we close the document if (open) { document.close(); if (!fname.equals("")) { // launch it Reports.LaunchPDF(fname); } } } 

If you need more info, let me know. Good luck!

Answer:

package com.cete.androidexamples.dynamicpdf.helloworld; import com.cete.dynamicpdf.*; import com.cete.dynamicpdf.pageelements.Label; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.widget.Toast; public class DynamicPDFHelloWorld extends Activity { private static String FILE = Environment.getExternalStorageDirectory() + "/HelloWorld.pdf"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Create a document and set it's properties Document objDocument = new Document(); objDocument.setCreator("DynamicPDFHelloWorld.java"); objDocument.setAuthor("Your Name"); objDocument.setTitle("Hello World"); // Create a page to add to the document Page objPage = new Page(PageSize.LETTER, PageOrientation.PORTRAIT, 54.0f); // Create a Label to add to the page String strText = "Hello World...\nFrom DynamicPDF™ Generator " + "for Java\nDynamicPDF.com"; Label objLabel = new Label(strText, 0, 0, 504, 100, Font.getHelvetica(), 18, TextAlign.CENTER); // Add label to page objPage.getElements().add(objLabel); // Add page to document objDocument.getPages().add(objPage); try { // Outputs the document to file objDocument.draw(FILE); Toast.makeText(this, "File has been written to :" + FILE, Toast.LENGTH_LONG).show(); } catch (Exception e) { Toast.makeText(this, "Error, unable to write to file\n" + e.getMessage(), Toast.LENGTH_LONG).show(); } } } 

add DynamicPDF to libs files
you can downloade it from link