I am trying to generate pdf using itextpdf but when table is getting extended to next page the color is getting faded. Suppose if I have generated 4 pages pdf then in 1st and 4th page it’s fine but in 2nd and 3rd page the table content color is getting faded. Please find the attached screenshots.
It’s very weird, please help me in this.
1st Page
2nd Page
Below is the code:
public class PdfGenerator {
public static void main(String[] args) throws IOException {
ClassPathResource resource = new ClassPathResource("PedTemplate.pdf");
File file = new File(resource.getFile().getAbsolutePath());
CustomPageDuplicationEventHandler z = null;
try (PdfReader reader = new PdfReader(file);
) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfWriter writer = new PdfWriter(baos);
PdfDocument destDoc = new PdfDocument(reader, writer);
PdfReader reader2 = new PdfReader(file);
PdfDocument srcDoc = new PdfDocument(reader2);
z = new CustomPageDuplicationEventHandler(srcDoc);
destDoc.addEventHandler(PdfDocumentEvent.END_PAGE, z);
Document document = new Document(destDoc);
document.setMargins(95, 24, 100, 24);
srcDoc.copyPagesTo(1, 1, destDoc);
for (int i = 0; i < 3; i++) {
Table table2 = new Table(4);
table2.addHeaderCell(new Cell(1, 4).add(new Paragraph("Female Head Circumference (0-36mo)")).setBold().setPaddingLeft(5).setBorderLeft(new SolidBorder(3)));
table2.addHeaderCell(new Cell().add(new Paragraph("DATE")).setBold().setPaddingLeft(5).setBorderRight(Border.NO_BORDER).setBorderLeft(Border.NO_BORDER).setBorderBottom(Border.NO_BORDER));
table2.addHeaderCell(new Cell().add(new Paragraph("HEAD CIRCUMFERENCE (CM)")).setBold().setPaddingLeft(5).setBorderRight(Border.NO_BORDER).setBorderLeft(Border.NO_BORDER).setBorderBottom(Border.NO_BORDER));
table2.addHeaderCell(new Cell().add(new Paragraph("PERCENTILE")).setBold().setPaddingLeft(5).setBorderRight(Border.NO_BORDER).setBorderLeft(Border.NO_BORDER).setBorderBottom(Border.NO_BORDER)).setFontSize(7);
table2.addHeaderCell(new Cell().add(new Paragraph("Z-SCORE")).setBold().setPaddingLeft(5).setBorderRight(Border.NO_BORDER).setBorderLeft(Border.NO_BORDER).setBorderBottom(Border.NO_BORDER));
for (int j = 0; j < 50; j++) {
table2.addCell(new Cell().add(new Paragraph("mm/dd/yyyy")).setPaddingLeft(5).setBorderRight(Border.NO_BORDER).setBorderLeft(Border.NO_BORDER).setBorderTop(Border.NO_BORDER));
table2.addCell(new Cell().add(new Paragraph(String.valueOf(j + 1))).setPaddingLeft(5).setBorderRight(Border.NO_BORDER).setBorderLeft(Border.NO_BORDER).setBorderTop(Border.NO_BORDER));
table2.addCell(new Cell().add(new Paragraph("#.#%")).setPaddingLeft(5).setBorderRight(Border.NO_BORDER).setBorderLeft(Border.NO_BORDER).setBorderTop(Border.NO_BORDER)).setFontSize(8);
table2.addCell(new Cell().add(new Paragraph("#.##")).setPaddingLeft(5).setBorderRight(Border.NO_BORDER).setBorderLeft(Border.NO_BORDER).setBorderTop(Border.NO_BORDER));
}
table2.setBorder(new SolidBorder(1));
table2.setWidth(767);
table2.setMarginTop(20);
document.add(table2);
}
destDoc.removeEventHandler(PdfDocumentEvent.END_PAGE, z);
document.close();
destDoc.close();
byte[] pdfAsBytes = baos.toByteArray();
FileOutputStream os = new FileOutputStream("FinalOutput.pdf");
os.write(pdfAsBytes);
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
static class CustomPageDuplicationEventHandler implements IEventHandler {
private final PdfDocument srcDoc;
public CustomPageDuplicationEventHandler(PdfDocument srcDoc) {
this.srcDoc = srcDoc;
}
@Override
public void handleEvent(Event event) {
System.out.println("Event");
PdfDocumentEvent docEvent = (PdfDocumentEvent) event;
PdfDocument pdfDoc = docEvent.getDocument();
PdfPage originalPage = srcDoc.getPage(1);
pdfDoc.addPage(originalPage.copyTo(pdfDoc));
}
}
}
Actually, I want use one pdf template, it has only one page, so I need to duplicate the page, but the eventListner was not duplicating to 2nd page so first time I am manually copying the page and then after that event listner working fine.
But why the content is getting faded, I am not getting, please help me here.
user26321118 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.