代码:
//Some logic to get data.
PdfPTable table = new PdfPTable(cols);
table.setWidthPercentage(100);
table.setHorizontalAlignment(Element.ALIGN_JUSTIFIED_ALL);
Phrase headerText = new Phrase(header);
headerText.setFont(FontFactory.getFont(FontFactory.COURIER_BOLD,14.6f));
PdfPCell headerRow = new PdfPCell(headerText);
headerRow.setColspan(7);
headerRow.setBackgroundColor(BaseColor.LIGHT_GRAY);
headerRow.setHorizontalAlignment(Element.ALIGN_CENTER);
headerRow.setPadding(5);
table.addCell(headerRow);
Set<Integer> keys = data.keySet();
double sum = 0;
for (Integer key : keys) {
//There data is added in table...
}
//generate pdf
Document document = new Document();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
PdfWriter.getInstance(document,byteArrayOutputStream);
document.open();
document.setMargins(5,5,5,5);
document.add(table);
document.add(p);
document.add(paragraph);
document.addCreationDate();
document.addTitle("Tenant activity");
document.close();
logger.debug("Pdf generated");
File f = new File("activity.pdf");
logger.debug("File path: " + f.getAbsolutePath());
如何为每个页面设置与第一页相同的页面 / 页面的填充?
答案 0 :(得分:1)
这是错误的顺序:
document.open();
document.setMargins(5,5,5,5);
这是正确的顺序:
document.setMargins(5,5,5,5);
document.open();
当您打开文档或调用document.newPage()
时,会初始化下一页,并且您无法更改页面属性,例如该页面的大小或边距。
因此,如果您更改页面大小或页边距,则这些更改仅在下一个页面上有效,而不是在当前页面上有效。
这是为什么?嗯,这是PDF,一切都是基于页面的,一旦页面初始化,如果你在添加内容时更改这些属性,你会得到一些非常奇怪的副作用。