JAVA生成PDF(尾部设置)
1.紧跟文字结束(显示图片和尾部内容)
1)在文章内容结束 追加table表格(关于页面分页印章展示被缩小情况)
1>itext7处理方式
通过设置它的breaks属性来指定行分页的处理方式。默认情况下,iText库会将整个表格都放在一页上,如果超过一页则会将整个表格放在下一页上,并且保留部分内容在上一页。
如果您希望表格在行分页时,将图片展示在下一页,可以将breaks属性设置为PdfPTable.AVOID_LAST_SPLIT。这样,在表格即将分页时,iText库会将当前行移动到下一页上,并且将该行所有内容全部展示在下一页上。
2>itext5处理方式
如果您使用的是iText5版本的话,可以使用setKeepTogether()方法来设置表格行的分页方式。
可以将setKeepTogether()方法设置为true来保证表格的一行不会被分割或移动到下一页。如果设置为false,则允许将表格的一行分割或移动到下一页。
PdfPTable table = new PdfPTable(3);//3列
table.getDefaultCell().setBorder(Rectangle.NO_BORDER); //设置表格无边框
table.setWidthPercentage(100);
table.setSpacingBefore(2f);
table.setSpacingAfter(2f);
table.setWidths(new int[]{
60, 20, 20});
table.setKeepTogether(true); // 设置行分页的处理方式 itext5
// table.setBreaks(PdfPTable.AVOID_LAST_SPLIT); 设置行分页的处理方式 iText7
PdfPTable subtable = new PdfPTable(1);
subtable.setWidthPercentage(100);
subtable.setSpacingBefore(2f);
subtable.setSpacingAfter(2f);
//添加子表格
table.addCell(subtable);
//添加空白单元格
table.addCell(getNoBorderCell("", 15, Element.ALIGN_LEFT, Element.ALIGN_MIDDLE, baseFont));
//获取印章图片
Image image = Image.getInstance("图片地址");
image.setScaleToFitLineWhenOverflow(true);
table.addCell(image);
return table;
3>setScaleToFitLineWhenOverflow函数
使用iText库来生成PDF文件,并使用ColumnText对象的setScaleToFitLineWhenOverflow方法来控制文本内容的缩放。以下是示例代码:
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("output.pdf"));
document.open();
String longText = "This is a long piece of text that may span multiple lines.";
PdfContentByte canvas = writer.getDirectContent();
BaseFont font = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
ColumnText ct = new ColumnText(canvas);
ct.setSimpleColumn(36, 750, 559, 36);
ct.setText(new