Это очень странно, пожалуйста. помогите мне в этом.
Ниже приведен код:
Код: Выделить всё
public class PdfGenerator {
public static void main(String[] args) throws IOException {
ClassPathResource templateResource = new ClassPathResource("RandomTemplate.pdf");
File pdfFile = new File(templateResource.getFile().getAbsolutePath());
CustomEventHandler eventHandler = null;
try (PdfReader pdfReader = new PdfReader(pdfFile);
) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PdfWriter pdfWriter = new PdfWriter(outputStream);
PdfDocument targetDocument = new PdfDocument(pdfReader, pdfWriter);
PdfReader pdfReader2 = new PdfReader(pdfFile);
PdfDocument sourceDocument = new PdfDocument(pdfReader2);
eventHandler = new CustomEventHandler(sourceDocument);
targetDocument.addEventHandler(PdfDocumentEvent.END_PAGE, eventHandler);
Document document = new Document(targetDocument);
document.setMargins(95, 24, 100, 24);
sourceDocument.copyPagesTo(1, 1, targetDocument);
for (int i = 0; i < 3; i++) {
Table table = new Table(4);
table.addHeaderCell(new Cell(1, 4).add(new Paragraph("Random Header Title")).setBold().setPaddingLeft(5).setBorderLeft(new SolidBorder(3)));
table.addHeaderCell(new Cell().add(new Paragraph("RANDOM DATE")).setBold().setPaddingLeft(5).setBorderRight(Border.NO_BORDER).setBorderLeft(Border.NO_BORDER).setBorderBottom(Border.NO_BORDER));
table.addHeaderCell(new Cell().add(new Paragraph("RANDOM MEASUREMENT")).setBold().setPaddingLeft(5).setBorderRight(Border.NO_BORDER).setBorderLeft(Border.NO_BORDER).setBorderBottom(Border.NO_BORDER));
table.addHeaderCell(new Cell().add(new Paragraph("RANDOM PERCENTILE")).setBold().setPaddingLeft(5).setBorderRight(Border.NO_BORDER).setBorderLeft(Border.NO_BORDER).setBorderBottom(Border.NO_BORDER)).setFontSize(7);
table.addHeaderCell(new Cell().add(new Paragraph("RANDOM SCORE")).setBold().setPaddingLeft(5).setBorderRight(Border.NO_BORDER).setBorderLeft(Border.NO_BORDER).setBorderBottom(Border.NO_BORDER));
for (int j = 0; j < 50; j++) {
table.addCell(new Cell().add(new Paragraph("dd/mm/yyyy")).setPaddingLeft(5).setBorderRight(Border.NO_BORDER).setBorderLeft(Border.NO_BORDER).setBorderTop(Border.NO_BORDER));
table.addCell(new Cell().add(new Paragraph(String.valueOf(j + 1))).setPaddingLeft(5).setBorderRight(Border.NO_BORDER).setBorderLeft(Border.NO_BORDER).setBorderTop(Border.NO_BORDER));
table.addCell(new Cell().add(new Paragraph("#.#%")).setPaddingLeft(5).setBorderRight(Border.NO_BORDER).setBorderLeft(Border.NO_BORDER).setBorderTop(Border.NO_BORDER)).setFontSize(8);
table.addCell(new Cell().add(new Paragraph("#.##")).setPaddingLeft(5).setBorderRight(Border.NO_BORDER).setBorderLeft(Border.NO_BORDER).setBorderTop(Border.NO_BORDER));
}
table.setBorder(new SolidBorder(1));
table.setWidth(767);
table.setMarginTop(20);
document.add(table);
}
targetDocument.removeEventHandler(PdfDocumentEvent.END_PAGE, eventHandler);
document.close();
targetDocument.close();
byte[] finalPdfBytes = outputStream.toByteArray();
FileOutputStream fileOutputStream = new FileOutputStream("FinalRandomOutput.pdf");
fileOutputStream.write(finalPdfBytes);
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
static class CustomEventHandler implements IEventHandler {
private final PdfDocument sourceDocument;
public CustomEventHandler(PdfDocument sourceDocument) {
this.sourceDocument = sourceDocument;
}
@Override
public void handleEvent(Event event) {
System.out.println("Event Triggered");
PdfDocumentEvent documentEvent = (PdfDocumentEvent) event;
PdfDocument pdfDocument = documentEvent.getDocument();
PdfPage originalPage = sourceDocument.getPage(1);
pdfDocument.addPage(originalPage.copyTo(pdfDocument));
}
}
}
Почему контент отображается блеклым? Я этого не понимаю.
Подробнее здесь: https://stackoverflow.com/questions/787 ... -next-page