java - 如何使用 Java 中的 PDFPTable 将 2 个表格从上到下添加到单个表格中

标签 java itext pdfptable

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 实例,一个是 table,另一个是 table2,我只想合并这两个实例并从我的代码返回。是否可以?我不想将其从我的代码添加到文档并返回文档实例。 pdf 看起来像所附图片。

最佳答案

总而言之,您本质上希望将这两个表合并为一个表,因为您的方法设计为仅返回一个表。

如果可能,最好的解决方案是更改方法的设计并允许它以 Iterable(例如 List)或数组的形式返回多个表。

如果这是不可能的(在您的情况下,返回单个表似乎是项目要求),解决方案是创建另一个单列表,并将第一个表放入其第一行,将第二个表放入第二行。为了获得正确的外观,您可能还需要相应地调整边距和边框的表格属性。

但请注意,iText 5 表格并不是为密集的表格堆叠而设计的;在表格中放置表格可能会产生有趣的效果,例如在分页符并且可能非常消耗资源。

关于java - 如何使用 Java 中的 PDFPTable 将 2 个表格从上到下添加到单个表格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52118181/

相关文章:

java - 扫描所有 beans,就好像它们在 Spring 的当前包中一样?

java - 电话资费计算器

java - 跨平台Java?安卓和桌面

java - PKCS12 证书错误

java - iText 结合 rowspan 和 colspan - PDFPTable

c# - iTextSharp pdfpTable 在同一页面的两列中流动

java - gRPC maven 未在目标文件夹中生成 stub 类

java - 具有固定单元格宽度和居中文本的 itext 表格

c# - 关闭空的 iTextSharp 文档时出错

java - 为 writeSelectedRows() 方法定义行跨度