itextpdf 插入表格并且后面有内容
时间: 2023-05-25 10:04:59 浏览: 141
以下是使用itextpdf插入表格并且后面有内容的示例代码:
import com.itextpdf.kernel.color.Color;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.font.PdfFontFactoryImp;
import com.itextpdf.kernel.font.PdfFontFactoryImp.FontCacheKey;
import com.itextpdf.kernel.font.PdfFontFactoryImp.FontParameter;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.border.Border;
import com.itextpdf.layout.border.SolidBorder;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.property.TextAlignment;
import com.itextpdf.layout.property.VerticalAlignment;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class CreateTableAndText {
public static final String DEST = "CreateTableAndText.pdf";
public static final PdfFont LABEL = PdfFontFactory.createFont("Helvetica-Bold", "Cp1252", true);
public static void main(String[] args) throws Exception {
File file = new File(DEST);
file.getParentFile().mkdirs();
new CreateTableAndText().createPdf(DEST);
}
public void createPdf(String dest) throws IOException {
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
Document doc = new Document(pdfDoc, new PageSize(612, 792));
List<List<String>> dataset = getData();
Table table = new Table(new float[] { 2, 1, 1 });
table.setWidth(540).setTextAlignment(TextAlignment.CENTER).setHorizontalAlignment(HorizontalAlignment.CENTER);
for (int i = 0; i < dataset.size(); i++) {
List<String> record = dataset.get(i);
for (int j = 0; j < record.size(); j++) {
if (i == 0) {
Cell cell = new Cell().add(new Paragraph(record.get(j)).setFont(LABEL).setBold());
cell.setBackgroundColor(Color.LIGHT_GRAY);
cell.setTextAlignment(TextAlignment.CENTER).setVerticalAlignment(VerticalAlignment.BOTTOM).setBorder(Border.NO_BORDER);
table.addCell(cell);
} else {
Cell cell = new Cell().add(new Paragraph(record.get(j)));
cell.setTextAlignment(TextAlignment.CENTER).setVerticalAlignment(VerticalAlignment.MIDDLE).setBorder(Border.NO_BORDER);
table.addCell(cell);
}
}
}
doc.add(table).add(new Paragraph("This is a text after the table."));
doc.close();
}
private List<List<String>> getData() {
List<List<String>> dataset = new ArrayList<List<String>>();
List<String> header = new ArrayList<String>();
header.add("Name");
header.add("Age");
header.add("Location");
dataset.add(header);
List<String> record = new ArrayList<String>();
record.add("John");
record.add("22");
record.add("New York");
dataset.add(record);
record = new ArrayList<String>();
record.add("Bill");
record.add("32");
record.add("Chicago");
dataset.add(record);
record = new ArrayList<String>();
record.add("Paul");
record.add("19");
record.add("Los Angeles");
dataset.add(record);
return dataset;
}
}
在上面的示例代码中,我们首先创建了一个表格,然后将其添加到文档中并添加了一个“ This is a text after the table.”的段落。
表格由一个列表嵌套的列表组成,其中第一行是表头,后面是每行的数据记录。在循环中,我们使用Cell来设置每个单元格的样式和内容,设置单元格的颜色、字体和边框等属性,然后添加单元格到表格中。
在文档中,插入表格之后的内容就像插入任何其他元素一样,只需使用类似于add()的方法将其添加到文档中即可。您可以在添加任何数量的段落、图片或其他内容之后添加表格。
最后,应该使用文档关闭方法关闭文档。这将保存所有更改并将其写入PDF文档。