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.
com.lowagiepackages have been renamed tocom.itextpdfmore 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.