我正在使用iText从表数据生成PDF文件。实际上,我可以使用单个表生成PDF文件。但我不知道如何在同一个PDF文件中生成第二个表。当我尝试这样做时,第二个表将成为第一个表的一部分。
String date = DateUtils.getTimestamp().toString();
date = date.replace(" ", "_");
date = date.replace(":", "_");
date = "d:/CompareDeal_" + date + ".pdf" ;
Document my_pdf_report = new Document();
PdfWriter.getInstance(my_pdf_report, new FileOutputStream(date));
my_pdf_report.open();
PdfPTable my_report_table = new PdfPTable(5); // CREATING TABLE rt
PdfPCell table_cell;
String blank_column = "";
table_cell=new PdfPCell(new Phrase(blank_column));
my_report_table.addCell(table_cell); // rt row 1 column 1
String deal1_plan="Deal1:Plan";
table_cell=new PdfPCell(new Phrase(deal1_plan));
my_report_table.addCell(table_cell); // rt row 1 column 2
String deal1_actual="Deal1:Actual";
table_cell=new PdfPCell(new Phrase(deal1_actual));
my_report_table.addCell(table_cell); // rt row 1 column 3
String deal2_plan="Deal2:Plan";
table_cell=new PdfPCell(new Phrase(deal2_plan));
my_report_table.addCell(table_cell); // rt row 1 column 4
String deal2_actual="Deal2:Actual";
table_cell=new PdfPCell(new Phrase(deal2_actual));
my_report_table.addCell(table_cell); // rt row 1 column 5
table_cell=new PdfPCell(new Phrase("Revenue(M$)"));
my_report_table.addCell(table_cell); // rt row 2 column 1
String planRevenue1 = StringUtils.convertToString(StringUtils.formatForNull(model.getPlanRevenue1(), "-", ""));
table_cell=new PdfPCell(new Phrase(planRevenue1));
my_report_table.addCell(table_cell); // rt row 2 column 2
String actualRevenue1 = StringUtils.convertToString(StringUtils.formatForNull(model.getActualRevenue1(), "-", ""));
table_cell=new PdfPCell(new Phrase(actualRevenue1));
my_report_table.addCell(table_cell); // rt row 2 column 3
String planRevenue2 = StringUtils.convertToString(StringUtils.formatForNull(model.getPlanRevenue2(), "-", ""));
table_cell=new PdfPCell(new Phrase(planRevenue2));
my_report_table.addCell(table_cell); // rt row 2 column 4
String actualRevenue2 = StringUtils.convertToString(StringUtils.formatForNull(model.getActualRevenue2(), "-", ""));
table_cell=new PdfPCell(new Phrase(actualRevenue2));
my_report_table.addCell(table_cell); // rt row 2 column 5
table_cell=new PdfPCell(new Phrase("PPM"));
my_report_table.addCell(table_cell); // rt row 3 column 1
String planPpm1 = StringUtils.convertToString(StringUtils.convertToUSFormat(model.getPlanPpm1(),StringUtils.DEFAULT_EMPTY_STRING),StringUtils.DEFAULT_EMPTY_STRING);
table_cell=new PdfPCell(new Phrase(planPpm1));
my_report_table.addCell(table_cell); // rt row 3 column 2
String actualPpm1 = StringUtils.convertToString(StringUtils.convertToUSFormat(model.getActualPpm1(),StringUtils.DEFAULT_EMPTY_STRING),StringUtils.DEFAULT_EMPTY_STRING);
table_cell=new PdfPCell(new Phrase(actualPpm1));
my_report_table.addCell(table_cell); // rt row 3 column 3
String planPpm2 = StringUtils.convertToString(StringUtils.convertToUSFormat(model.getPlanPpm2(),StringUtils.DEFAULT_EMPTY_STRING),StringUtils.DEFAULT_EMPTY_STRING);
table_cell=new PdfPCell(new Phrase(planPpm2));
my_report_table.addCell(table_cell); // rt row 3 column 4
String actualPpm2 = StringUtils.convertToString(StringUtils.convertToUSFormat(model.getActualPpm2(),StringUtils.DEFAULT_EMPTY_STRING),StringUtils.DEFAULT_EMPTY_STRING);
table_cell=new PdfPCell(new Phrase(actualPpm2));
my_report_table.addCell(table_cell);// rt row 3 column 5
table_cell=new PdfPCell(new Phrase("Rev per FTE($)"));
my_report_table.addCell(table_cell); // rt row 4 column 1
String planFte1 = StringUtils.convertToString(StringUtils.formatForNull(model.getPlanFte1(), "-", ""));
table_cell=new PdfPCell(new Phrase(planFte1));
my_report_table.addCell(table_cell); // rt row 4 column 2
String actualFte1 = StringUtils.convertToString(StringUtils.formatForNull(model.getActualFte1(), "-", ""));
table_cell=new PdfPCell(new Phrase(actualFte1));
my_report_table.addCell(table_cell); // rt row 4 column 3
String planFte2 = StringUtils.convertToString(StringUtils.formatForNull(model.getPlanFte2(), "-", ""));
table_cell=new PdfPCell(new Phrase(planFte2));
my_report_table.addCell(table_cell); // rt row 4 column 4
String actualFte2 = StringUtils.convertToString(StringUtils.formatForNull(model.getActualFte2(), "-", ""));
table_cell=new PdfPCell(new Phrase(actualFte2));
my_report_table.addCell(table_cell); // rt row 4 column 5
my_pdf_report.add(my_report_table); // ADDING TABLE rt
PdfPTable my_report_table1 = new PdfPTable(5); // CREATING TABLE t1
PdfPCell table_cell1;
String blank_column1 = "";
table_cell1=new PdfPCell(new Phrase(blank_column1));
my_report_table1.addCell(table_cell1); // t2 row 1 column 1
String deal1_plan1="Deal1:Plan";
table_cell1=new PdfPCell(new Phrase(deal1_plan1));
my_report_table1.addCell(table_cell1); // t2 row 1 column 2
String deal1_actual1="Deal1:Actual";
table_cell1=new PdfPCell(new Phrase(deal1_actual1));
my_report_table1.addCell(table_cell1); // t2 row 1 column 3
String deal2_plan1="Deal2:Plan";
table_cell1=new PdfPCell(new Phrase(deal2_plan1));
my_report_table1.addCell(table_cell1); // t2 row 1 column 4
String deal2_actual1="Deal2:Actual";
table_cell1=new PdfPCell(new Phrase(deal2_actual1));
my_report_table1.addCell(table_cell1); // t2 row 1 column 5
my_pdf_report.add(my_report_table1); // ADDING TABLE r1
my_pdf_report.close();
到目前为止,这就是我所做的。
无论如何,我们可以为生成的表格添加样式,如字体大小和字体颜色吗?
答案 0 :(得分:0)
起初我不明白你的问题。我用一些注释更新了您的代码,以便我可以更好地了解您创建,填充和添加表的位置。我可以清楚地看到你添加了两个不同的表,我不明白为什么你声称第二个表是第一个表的一部分。您正在添加两个不同的表。
然而,也许你的眼睛在愚弄你。也许您只看到一个表,因为我标记为rt
的表与我标记为t1
的表之间没有额外的空格。这可以很容易地修复如下:
PdfPTable my_report_table = new PdfPTable(5);
my_report_table.setSpacingAfter(10);
这会在我标有rt
的表后添加一些额外的空格,更具体地说,rt
和t1
之间的距离将是10个用户单位(默认情况下约为10) PT)。
另一个选择是在第二个表之前添加一些额外的间距:
PdfPTable my_report_table1 = new PdfPTable(5);
my_report_table1.setSpacingBefore(10);
这会在第二个表之前添加10个用户单位的空间。
至于你的其他疑问:我也有疑问。我怀疑你是否咨询过免费电子书The Best iText Questions on StackOverflow。在本书中,您将找到一个名为“Tables”的章节和另一个名为“Table events”的章节。在这些章节中,您将找到问题的答案,例如:
你的第二个问题对于StackOverflow而言过于宽泛。请查阅文档,如果没有找到答案,请发布更具体的问题。