iText не добавляет таблицу с одной строкой - PullRequest
0 голосов
/ 26 октября 2018

Я создаю документ PDF с несколькими таблицами, и когда таблица имеет только одну строку, она не добавляет его в документ. Я проверил, что строка завершена, как я видел это в другом посте, и добавил table.completeRow() на всякий случай. Однако единственный способ, которым это работает, - добавить еще одну пустую строку:

table.addCell(new Paragraph("", paragraphFontNormal));
table.completeRow()

Я не думаю, что это хорошее решение, и я хотел бы знать, что здесь не так. Может кто-нибудь помочь, пожалуйста?

Это метод:

public void createPdf(DateRange dates, HttpServletResponse response) throws DocumentException, IOException {

    boolean first = true;
    Document document = new Document(PageSize.A4.rotate());
    PdfWriter.getInstance(document, response.getOutputStream());
    document.open();

    List<Rejects> report = findAll(dates);

    for(Rejects rejects : report){
        if (first) {
            first = false;
            addGroupAdmin(rejects, document, dates);
        }else{
            if (rejects.getAdminGroup().equals(adminGroup)) {
                table.addCell(new Paragraph(rejects.getZone(), paragraphFontNormal));
                table.addCell(new Paragraph(dateFormat.format(rejects.getRejDate()), paragraphFontNormal));
                table.addCell(new Paragraph(rejects.getProcName(), paragraphFontNormal));
                table.addCell(new Paragraph(rejects.getKindId(), paragraphFontNormal));
                table.addCell(new Paragraph(rejects.getVarietyName(), paragraphFontNormal));
                table.addCell(new Paragraph(rejects.getSlrn(), paragraphFontNormal));
                table.addCell(new Paragraph(rejects.getRejReason(), paragraphFontNormal));
                table.addCell(new Paragraph(rejects.getAdminGroup(), paragraphFontNormal));
                table.addCell(new Paragraph(rejects.getDescription(), paragraphFontNormal));
            }else{

                /*** It doesn't work like this for one row***/  
                document.add(table);

                document.newPage();
                addGroupAdmin(rejects, document, dates);
            }
        }
    }

    /*** It works like this ***/
    table.addCell(new Paragraph("", paragraphFontNormal));
    table.completeRow();
    document.add(table);

    document.newPage();
    response.flushBuffer();
    document.close();
}

Это метод addGroupAdmin:

private void addGroupAdmin(Rejects rejects, Document document, DateRange dates) throws DocumentException {
        adminGroup = rejects.getAdminGroup();
        Paragraph headLine = new Paragraph("REJECTED APPLICATION LIST " + dateFormat.format(dates.getStartDate())
                + "-" + dateFormat.format(dates.getEndDate()) + " - " + rejects.getAdminGroupDesc() , paragraphFontBold);
        headLine.setAlignment(Element.ALIGN_CENTER);
        document.add(headLine);
        document.add( Chunk.NEWLINE );

        table = new PdfPTable(9);
        table.getDefaultCell().setBorder(Rectangle.NO_BORDER);
        table.getDefaultCell().setMinimumHeight(20);
        table.getDefaultCell().setPaddingBottom(10);
        table.setWidthPercentage(900);
        table.setHeaderRows(1);
        table.setTotalWidth(new float[]{ 40, 60, 140, 30, 60, 90, 30, 90, 100 });
        table.setLockedWidth(true);

        table.addCell(new Paragraph(rejects.getZone(), paragraphFontNormal));
        table.addCell(new Paragraph(dateFormat.format(rejects.getRejDate()), paragraphFontNormal));
        table.addCell(new Paragraph(rejects.getProcName(), paragraphFontNormal));
        table.addCell(new Paragraph(rejects.getKindId(), paragraphFontNormal));
        table.addCell(new Paragraph(rejects.getVarietyName(), paragraphFontNormal));
        table.addCell(new Paragraph(rejects.getSlrn(), paragraphFontNormal));
        table.addCell(new Paragraph(rejects.getRejReason(), paragraphFontNormal));
        table.addCell(new Paragraph(rejects.getAdminGroup(), paragraphFontNormal));
        table.addCell(new Paragraph(rejects.getDescription(), paragraphFontNormal));
}

1 Ответ

0 голосов
/ 26 октября 2018

Вы устанавливаете

table.setHeaderRows(1);

Это означает, что первая строка, добавляемая в таблицу, используется в качестве строки заголовка.

Таким образом, если

,Таблица имеет только одну строку

, тогда в таблице есть строка заголовка, но нет строк содержимого.iText игнорирует таблицы без строк содержимого.Таким образом,

не добавляет его в документ.

Таким образом, решение не устанавливать HeaderRows в вашем addGroupAdmin метод!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...