7

I am trying to add an Image to a PDF file using iText. The files are converted from .TXT to PDF and an image is supposed to be added:

//Convert Reports to PDF File conv = new File("Report Forms/"); String[] filesconv = conv.list(only); for (int c = 0; c < filesconv.length; c++) { PdfWriter writer = null; try { Document output = new Document(PageSize.B4); Rectangle page = output.getPageSize(); page.setBackgroundColor(new java.awt.Color(255, 255, 255)); FileInputStream fs = new FileInputStream("Report Forms/" + filesconv[c]); FileOutputStream file = new FileOutputStream(new File("Report Forms/" + name + " " + exa + " FORM " + level + " " + year + ".pdf")); DataInputStream in =new DataInputStream(fs); BufferedReader br = new BufferedReader(new InputStreamReader( in )); writer = PdfWriter.getInstance(output, file); writer.createXmpMetadata(); //define the font for the disclaimer. com.lowagie.text.Font fontfooter = new com.lowagie.text.Font(com.lowagie.text.Font.COURIER, 12, com.lowagie.text.Font.BOLD); fontfooter.setColor(new java.awt.Color(0, 52, 154)); output.newPage(); writer.setPageEvent(new CustomBorder()); output.open(); writer.open(); FileInputStream fsname = new FileInputStream("Report Forms/" + filesconv[c]); BufferedReader brname = new BufferedReader(new InputStreamReader(fsname)); for (int p = 0; p < 0; p++) { brname.readLine(); } String custname = brname.readLine(); // System.out.println(custname); com.lowagie.text.Font f1 = new com.lowagie.text.Font(com.lowagie.text.Font.COURIER, 12, com.lowagie.text.Font.BOLD); f1.setColor(Color.BLACK); output.add(new Paragraph(new Phrase(custname, f1))); Image image = Image.getInstance("Student Images/" + num + ".png"); image.setAlignment(Image.ALIGN_RIGHT); image.setAbsolutePosition(450f, 10f); image.scalePercent(60, 50); Chunk chunk = new Chunk(image, 0, -20); HeaderFooter header = new HeaderFooter(new Phrase(chunk), false); header.setAlignment(Element.ALIGN_RIGHT); header.setBorder(Rectangle.NO_BORDER); output.setHeader(header); String line = ""; int lineNo = br.read(); while ((line = br.readLine()) != null) { for (lineNo = 0; br.ready(); lineNo++) { if (lineNo % 2 == 1) { line = br.readLine(); com.lowagie.text.Font f2 = new com.lowagie.text.Font(com.lowagie.text.Font.COURIER, 12, com.lowagie.text.Font.BOLD); f2.setColor(Color.BLACK); Paragraph p1 = new Paragraph(line, f2); p1.setAlignment(Element.TABLE); PdfPTable table = new PdfPTable(1); table.setWidthPercentage(100); PdfPCell cell = new PdfPCell(); cell.setBackgroundColor(new java.awt.Color(247, 246, 243)); cell.setBorder(Rectangle.NO_BORDER); cell.setUseBorderPadding(true); cell.setPadding(0); cell.setBorderColor(new java.awt.Color(247, 246, 243)); cell.addElement(p1); table.addCell(cell); output.add(table); } else { line = br.readLine(); com.lowagie.text.Font f2 = new com.lowagie.text.Font(com.lowagie.text.Font.COURIER, 12, com.lowagie.text.Font.BOLD); f2.setColor(new java.awt.Color(0, 52, 154)); Paragraph p1 = new Paragraph(line, f2); p1.setAlignment(Element.TABLE); PdfPTable table = new PdfPTable(1); table.setWidthPercentage(100); PdfPCell cell = new PdfPCell(); cell.setBorder(Rectangle.NO_BORDER); cell.setBorderWidthBottom(1f); cell.setUseBorderPadding(true); cell.setPadding(0); cell.setBorderColor(new java.awt.Color(255, 255, 255)); cell.addElement(p1); table.addCell(cell); // output.add(page); output.add(table); } } } output.close(); file.close(); fs.close(); fsname.close(); in .close(); writer.close(); } catch(Exception ce) { JOptionPane.showMessageDialog(this, ce, "Error", JOptionPane.PLAIN_MESSAGE); } } 

If I am not adding any image the conversion is happening fine but when I add image the PDF files are getting generated with 0KB and when you try to open, error comes that the file could not be opened because it is dammaged.

3
  • 6
    com.lowagie packages have been renamed to com.itextpdf more than 3 years ago, when iText 5.0.0 was released. This means you are using an old, deprecated version of iText that might represent risks for you, your company and your potential customers, both technically and legally. Commented Feb 11, 2013 at 13:54
  • 2
    @AlexisPigeon iText2 is the last free open source version of iText. Your assumption about legal problem are simply wrong, it was licenced LGPL and MPL and those licence remain perpetually valid. BTW the link doesn't work any longer. Commented Mar 21, 2018 at 7:38
  • 2
    @9ilsdx9rvj0lo The legal concern was that the code should never have been licensed under LGPL or MPL, because some of the contributors hadn't approved that license. Thus the potential problem : by using iText2, you could be sued for using a library that wasn't legally under LGPL / MPL. The technical concern was that no support was given anymore for iText2. Commented Aug 7, 2018 at 15:52

1 Answer 1

5

May this help you for adding image and also image caption to pdf.

Image image1 = Image.getInstance("sample.png"); image1.setAlignment(Element.ALIGN_CENTER); image1.scaleAbsolute(450, 250); //Add to document document.add(image1); Paragraph imgCaption = new Paragraph(" Sample image-1", imgcaption); Summary.setAlignment(Element.ALIGN_LEFT); Summary.setSpacingAfter(10f); document.add(imgCaption); 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.