1、公司要求生成pdf文件,内容中间需要一个表格,表格要根据数据列表的长度动态变长
直接上代码,需要的复制+百度
引入包
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.10</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
代码
/**
* 生成最终版本的pdf
* @param newPath 已写入数据的pdf模板路径
* @param finalPath 最终版本的pdf生成路径
* @param listNum
* @param baselineData2
*/
public static byte[] generateFinalPdf(List<String[]> list, String[] titleArr,
float[] widths, List<String[]> listNum,Map<String, Object> params) throws Exception {
/** 实例化文档对象 */
Document document = new Document();
/** 创建 PdfWriter 对象 */
//创建临时文件名
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
//临时路径
String path = uuid+".pdf";
FileOutputStream outputStream = new FileOutputStream(path);
PdfWriter writer = PdfWriter.getInstance(document, outputStream);// 文件的输出路径+文件的实际名称
document.open();
// document.newPage();//新创建一页来存放后面生成的表格
BaseFont bfCN = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
// 表格的字体
Font headFont = new Font(bfCN, 11f, Font.BOLD, BaseColor.BLACK);
Font textFont = new Font(bfCN, 9f, Font.NORMAL, BaseColor.BLACK);
//正文的字体
Font headTxtFont = new Font(bfCN, 16f, Font.BOLD, BaseColor.BLACK);//标题
Font TxtFont = new Font(bfCN, 11f, Font.NORMAL, BaseColor.BLACK);//正文
Font Fwhite = FontFactory.getFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Fwhite.setColor(BaseColor.WHITE);
/** 向文档中添加内容,创建段落对象 */
Paragraph titleParagraph = new Paragraph();
Chunk chunk = new Chunk("应收账款转让通知书",headTxtFont);
titleParagraph.setAlignment(Element.ALIGN_CENTER);
titleParagraph.add(chunk);
document.add(titleParagraph);
document.add(blankRow31);
// 建立一个titleArr长度列的表格
PdfPTable table = new PdfPTable(titleArr.length);
// 计算'合并列'的合并相关集合
List<Integer> index