Содержимое таблицы отображается затемненным на следующей странице.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Содержимое таблицы отображается затемненным на следующей странице.

Сообщение Anonymous »

Я пытаюсь создать PDF-файл с помощью itextpdf. Когда таблица расширяется на следующую страницу, цвет становится блеклым. Предположим, я создал четыре страницы PDF-файла, затем на первой и четвертой страницах все в порядке, но на второй и третьей страницах цвет содержимого таблицы отображается блеклым.
Это очень странно, пожалуйста. помогите мне в этом.
Ниже приведен код:

Код: Выделить всё

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));
}
}
}
Я хочу использовать один шаблон PDF, в нем только одна страница, поэтому мне нужно дублировать страницу, но прослушиватель событий не дублировался на вторую страницу, поэтому в первый раз я копирую вручную страница, а затем после этого прослушиватель событий работает нормально.
Почему контент отображается блеклым? Я этого не понимаю.

Подробнее здесь: https://stackoverflow.com/questions/787 ... -next-page
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»