How to create a PDF file using iText or another Android library?

How to create a PDF file using iText or another Android library?

Is there a tutorial on iText for Android?

thanks

+6
source share
5 answers

You can use iText to create PDF files. Use the latest version (5.1.3) and include only the itextpdf-5.1.3.jar path in the build path. You can use something like this to complete the creation of PDF.

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, be sure to use permission to write to external storage in the manifest.xml file.

+7
source

It is easy, for example.

Here is 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

Luck

+6
source

This is my sample encoding for creating a pdf file with text and image content using the Itext library and for storing a pdf file in an external storage location. The only thing you need is to download the itext library and add it to 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(); } } 
+1
source

I used iText in a java swing application - it worked well to create some basic PDF files. The code looks 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 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 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 Name:", getFieldHeadingFont()))); table.addCell(new BorderlessCell(new Paragraph(emptyIfNull(f.getMothersName()), getTextFont()))); table.addCell(new BorderlessCell(new Paragraph("Father 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 information, let me know. Good luck

0
source
 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 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 files to libs files you can reset it with link

0
source

Source: https://habr.com/ru/post/903402/


All Articles