创建pdf 表格
pom.xml添加Jar依赖
<!-- pdf处理jar依赖 start -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.12</version>
</dependency>
<!-- pdf处理jar依赖 end -->
<!-- pdf处理jar包依赖 start -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>4.2.1</version>
</dependency>
<!-- pdf处理jar包依赖 end -->
package com.bjpowernode.p2p.admin.pdf;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import org.apache.log4j.Logger;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
/**
* 创建pdf表格
*
* @author ldd
*
*/
public class CreatePdfTable {
private static final Logger logger = Logger.getLogger(CreatePdfTable.class);
/**
* 创建PDF表格文件
*
* @param outPdfTableFile 输出表头文件路径
* @param tableHeaderList 头部标题
* @param tableDataList 数据List
* @throws DocumentException
* @throws IOException
* @throws Exception
*/
public static void createPdfTable (String outPdfTableFile, List<String> tableHeaderList, List<String> tableDataList) {
//创建一个文档对象纸张大小为A4
Document doc = new Document();
PdfWriter writer = null;
try {
//设置要输出到磁盘上的文件名称
writer = PdfWriter.getInstance(doc, new FileOutputStream(new File(outPdfTableFile)));
//设置作者信息
doc.addAuthor("");
//设置文档创建日期
doc.addCreationDate();
//设置标题
doc.addTitle("");
//设置值主题
doc.addSubject("");
//打开文档开始写内容
doc.open();
//使用资源字体(ClassPath)simkai.ttf 字体:可以从win 中字体中cp
String simkaiPath = CreatePdfTable.class.getResource("simkai.ttf").getPath().replaceAll("%20", " ");
BaseFont baseFont = BaseFont.createFont(simkaiPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Font chineseFont = new Font(baseFont, 12, Font.NORMAL, BaseColor.BLACK);
//创建一个四列的表格
PdfPTable table = new PdfPTable (tableHeaderList.size());
//设置表格具体宽度
table.setTotalWidth(100f);
//设置每一列所占的长度
table.setWidths(new float[] {28f, 18f, 20f, 17f});
//设置行头
Paragraph titleP = new Paragraph("甲方(出借人):", chineseFont);
//设置居中
titleP.setAlignment(Paragraph.ALIGN_CENTER);
//设置字体 +12
titleP.setLeading(chineseFont.getSize() + 12);
//设置单元格
PdfPCell titleCell = new PdfPCell(titleP);
titleCell.setBorder(0);//设置边框
titleCell.setColspan(4);//标段名称 占一行 (甲方(出借人):)扩展4列
table.addCell(titleCell);
//创建表头
for (int i=0; i<tableHeaderList.size(); i++) {
PdfPCell cell = new PdfPCell();
Paragraph paragraph = new Paragraph(tableHeaderList.get(i), chineseFont);
paragraph.setAlignment(Element.ALIGN_CENTER);//设置该段落为居中显示
cell.setPhrase(paragraph);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(cell);
//添加此代码后每页都会显示表头
//table.endHeaders();
}
//创建表格数据
for (int i=0; i<tableDataList.size(); i++) {
//设置编号单元格
PdfPCell cell = new PdfPCell();
Paragraph para = new Paragraph(tableDataList.get(i), chineseFont);
para.setAlignment(Element.ALIGN_CENTER);//设置该段落为居中显示
cell.setPhrase(para);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(cell);
}
//将表格添加到新的文档
doc.add(table);
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (doc.isOpen()) {
doc.close();
}
if (null != writer) {
writer.close();
}
logger.info("创建数据量:" + tableDataList.size());
}
}
}