【发布时间】:2018-10-26 08:53:08
【问题描述】:
我正在创建一个包含多个表格的 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));
}
【问题讨论】: