java .io.IOException: в документе нет страниц. Работает нормально локально, но не работает после развертывания в aws - PullRequest
0 голосов
/ 27 марта 2020

Привет. Я пытаюсь создать PDF, используя itextpdf. Работает нормально при локальном тестировании. Но после aws развертывания я получаю 406 неприемлемо с java .io.IOException: у документа нет исключений страниц.

Есть много ответов, но они не связаны с вопросы развертывания. Нужно ли проверять какие-либо настройки сети или проблема заключается в коде генерации PDF?

Ниже приведена моя реализация кода: Пожалуйста, предложите какое-нибудь решение.

public byte[] createPdf(List<Participant> participantList) throws IOException,
        DocumentException, com.google.zxing.WriterException {
    Document document = new Document();
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    PdfWriter.getInstance(document, byteArrayOutputStream);
    document.open();
    document.add(createMainTable(participantList));
    document.close();
    return byteArrayOutputStream.toByteArray();
}

public static PdfPTable createMainTable(List<Participant> optionalParticipant) throws BadElementException,
        IOException, com.google.zxing.WriterException {
    PdfPTable table = new PdfPTable(2);
    logger.info("Main Table was created");
    for (int i = 0; i < optionalParticipant.size(); i++) {
        PdfPCell cell1 = new PdfPCell();
        cell1.setBorderWidth(0);
        cell1.setPadding(10f);
        cell1.addElement(createSubTable(optionalParticipant.get(i)));
        table.addCell(cell1);
    }
    return table;
}

public static PdfPTable createSubTable(Participant participant) throws BadElementException,
        IOException, com.google.zxing.WriterException {

    BaseColor baseColor = new BaseColor(150, 150, 150);
    PdfPTable table = new PdfPTable(2);
    table.setWidthPercentage(100);
    PdfPCell cell, cell1, cell2;
    Font font = new Font();
    font.setSize(10f);
    font.setColor(BaseColor.WHITE);
    String participantName = participant.getFirstName() + " " + participant.getLastName();
    Chunk chunk = new Chunk(participantName, font);
    Paragraph head = new Paragraph("             "+chunk);
    head.setFont(font);
    cell = new PdfPCell(head);
    cell.setColspan(2);
    cell.setBackgroundColor(baseColor);
    cell.setPadding(2f);
    table.addCell(cell);
    String qrData = participant.getQrCodeData();
    Image img = getQRCodeImage(qrData);

    font = new Font();
    font.setSize(5f);

    chunk = new Chunk("\n" + "Event ID: " + participant.getEvent().getEventId() +
            "\n\n" + "Unique ID: " + participant.getUniqueId() +
            "\n\n" + "Email ID: " + participant.getEmail(), font);

    Paragraph body = new Paragraph(chunk);
    cell1 = new PdfPCell(body);
    cell1.setBorderWidthRight(0);
    cell1.setPadding(10f);

    cell2 = new PdfPCell();
    cell2.addElement(img);
    cell2.setBorderWidthLeft(1);
    cell2.setPadding(10f);

    table.addCell(cell1);
    table.addCell(cell2);
    logger.info("Sub Table was created");
    return table;
}

1 Ответ

0 голосов
/ 07 апреля 2020

Пожалуйста, проверьте, что memberList не равен NULL и содержит элементы. Вы можете использовать регистратор для печати размера списка перед его использованием.

logger.info("No of participants: "+participantList.size());

Кроме того, сразу после открытия документа всегда добавляйте пустой чанк в документ, чтобы избежать этого исключения.

document.open();
document.add(new Chunk(""));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...