如何在 Java 中使用 PDFPTable 将 2 table 从上到下添加到单个 table
How to add 2 tables top to bottom to a single table using PDFPTable in Java
请检查这里的代码。面临从上到下合并 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,我只想合并这两个实例和我代码中的 return .可能吗?我不想将它从我的代码和 return 文档实例添加到文档中。 pdf 看起来像附加的图像。
总而言之,您基本上想将这两个 table 合并为一个,因为您的方法被设计为 return 只有一个 table。
如果可能,最好的解决方案是更改方法的设计并允许它 return 多个 tables,作为 Iterable
(例如 List
) 或作为数组。
如果这不可能(在您的情况下 return 单个 table 似乎是项目要求),解决方案是创建另一个单列 table 并将您的第一个 table 放入其第一行,将您的第二个放入第二行。为了获得适当的外观,您可能还需要相应地调整边距和边框的 table 属性。
不过请注意,iText 5 table 并非为密集 table 堆叠而设计; tables inside tables inside tables 可能会在例如期间引起有趣的影响。分页符,可能非常耗费资源。
请检查这里的代码。面临从上到下合并 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,我只想合并这两个实例和我代码中的 return .可能吗?我不想将它从我的代码和 return 文档实例添加到文档中。 pdf 看起来像附加的图像。
总而言之,您基本上想将这两个 table 合并为一个,因为您的方法被设计为 return 只有一个 table。
如果可能,最好的解决方案是更改方法的设计并允许它 return 多个 tables,作为 Iterable
(例如 List
) 或作为数组。
如果这不可能(在您的情况下 return 单个 table 似乎是项目要求),解决方案是创建另一个单列 table 并将您的第一个 table 放入其第一行,将您的第二个放入第二行。为了获得适当的外观,您可能还需要相应地调整边距和边框的 table 属性。
不过请注意,iText 5 table 并非为密集 table 堆叠而设计; tables inside tables inside tables 可能会在例如期间引起有趣的影响。分页符,可能非常耗费资源。