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.