Как добавить 2 таблицы сверху вниз к одной таблице с помощью PDFPTable в Java - PullRequest
0 голосов
/ 31 августа 2018

enter image description here

Пожалуйста, проверьте код здесь. Возникла проблема с объединением 2 PDFPtable сверху вниз.

PdfPTable table = new PdfPTable(new float[] { 1.0f, 2.0f, 5.0f, 1.0f, 2.0f });
table.setWidthPercentage(100.0f);

ArrayList<String> lHeaders = new ArrayList<>();
lHeaders.add("S. No.");
lHeaders.add("Course Code");
lHeaders.add("Course Name");
lHeaders.add("Credit");
lHeaders.add("Letter Grade");

ArrayList<String> lData = new ArrayList<>();
lData.add("1");
lData.add("D 210");
lData.add("COMPUTER & INFORMATION TECHNOLOGY FUNDAMENTAL LAB-II");
lData.add("1.0");
lData.add("BB");

// Create and add a title across both columns.

Font headerfont = new Font(Font.TIMES_ROMAN, 15, Font.BOLD);

// PdfPCell cell = new PdfPCell (new Paragraph ("New Mustang
// Features"));

PdfPCell cell;

for (String i : lHeaders) {
    cell = new PdfPCell(new Paragraph(i, headerfont));
    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
    cell.setBackgroundColor(new Color(255, 0, 0));
    // cell.setPadding (10.0f);
    table.addCell(cell);
}

// Add header cells for these columns.

// cell = new PdfPCell (new Paragraph ("Feature"));

// PdfPCell cell1;
Font datafont = new Font(Font.HELVETICA, 10, Font.NORMAL);
for (String j : lData) {
    cell = new PdfPCell(new Paragraph(j, datafont));
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    // cell.setPadding (10.0f);
    table.addCell(cell);
}

Font headerfont2 = new Font(Font.TIMES_ROMAN, 10, Font.BOLD);

PdfPTable table2 = new PdfPTable(8);
table2.setWidthPercentage(100.0f);
PdfPCell cell2;
cell2 = new PdfPCell(new Paragraph("CURRENT SEMESTER RECORD", headerfont2));
cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
cell2.setColspan(4);
table2.addCell(cell2);
cell2 = new PdfPCell(new Paragraph("CUMULATIVE SEMESTER RECORD", headerfont2));
cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
cell2.setColspan(4);
table2.addCell(cell2);

cell2 = new PdfPCell(new Paragraph("TOTAL CREDIT POINTS", headerfont2));
cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
table2.addCell(cell2);
cell2 = new PdfPCell(new Paragraph("TOTAL CREDIT", headerfont2));
cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
table2.addCell(cell2);
cell2 = new PdfPCell(new Paragraph("CREDITS EARNED", headerfont2));
cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
table2.addCell(cell2);
cell2 = new PdfPCell(new Paragraph("SGPA", headerfont2));
cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
table2.addCell(cell2);

cell2 = new PdfPCell(new Paragraph("TOTAL CREDIT POINTS", headerfont2));
cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
table2.addCell(cell2);
cell2 = new PdfPCell(new Paragraph("TOTAL CREDIT", headerfont2));
cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
table2.addCell(cell2);
cell2 = new PdfPCell(new Paragraph("CREDITS EARNED", headerfont2));
cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
table2.addCell(cell2);
cell2 = new PdfPCell(new Paragraph("CGPA", headerfont2));
cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
table2.addCell(cell2);
cell2 = new PdfPCell(new Paragraph("Result declared on :", headerfont2));
cell2.setHorizontalAlignment(Element.ALIGN_LEFT);
cell2.setPaddingTop(40);
cell2.setBorderWidthLeft(0.5f);
cell2.setBorderWidthBottom(0.5f);
cell2.setColspan(4);
table2.addCell(cell2);
cell2 = new PdfPCell(new Paragraph("Controller of Examinations", headerfont2));
cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
cell2.setPaddingTop(40);
cell2.setBorderWidthRight(0.5f);
cell2.setBorderWidthBottom(0.5f);
cell2.setColspan(4);
table2.addCell(cell2);

Я создал два экземпляра PDFPtable, один из которых является таблицей, а другой - таблицей 2, я просто хочу объединить эти два экземпляра и вернуться из своего кода. Является ли это возможным? Я не хочу добавлять его в документ из моего кода и возвращать экземпляр документа. PDF выглядит как прикрепленное изображение.

1 Ответ

0 голосов
/ 10 сентября 2018

Подводя итог, вы, по сути, хотите объединить эти две таблицы в одну, поскольку ваш метод предназначен для возврата только одной таблицы.

Если возможно, лучшим решением было бы изменить структуру метода и позволить ему возвращать несколько таблиц в виде Iterable (например, List) или в виде массива.

Если это невозможно (в вашем случае возврат одной таблицы является требованием проекта), решение будет состоять в том, чтобы создать другую таблицу с одним столбцом и поместить вашу первую таблицу в ее первую строку, а вторую - в второй ряд. Для правильного отображения вы можете также соответствующим образом адаптировать свойства таблицы для полей и границ.

Имейте в виду, однако, что таблицы iText 5 не были рассчитаны на интенсивное наложение таблиц; наличие таблиц внутри таблиц внутри таблиц может вызвать интересные эффекты, например разрывы страниц и могут быть довольно ресурсоемкими.

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