1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java使用itext生成表格pdf文件

java使用itext生成表格pdf文件

时间:2022-03-06 18:35:58

相关推荐

java使用itext生成表格pdf文件

以下主要讲解的是java使用itext生成表格pdf文件,话不多说,直接上代码

一.首先引入itext所使用的包

<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.4.3</version></dependency><dependency><groupId>com.lowagie</groupId><artifactId>itext</artifactId><version>2.1.7</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency>

二.pdf内容创建

/*** 表格的样式* @param content 内容* @param font 字体对象* @param high 表格高度* @Param isAlignCenter 是否水平居中* @Param isAlignMidde 是否垂直居中* @return*/private static PdfPCell pdfTableStyle(String ,content,Font font,int high,boolean isAlignCenter,boolean isAlignMidde){PdfPCell pdfPCell = new PdfPCell(new Phrase(content,font));pdfPCell.setMinimumHeight(high);pdfPCell.setUseAscender(true); // 设置可以居中if (isAlignCenter){pdfPCell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER); // 设置水平居中}if (isAlignMidde){pdfPCell.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE); // 设置垂直居中}return pdfPCell;}/*** 检查是否存在文件夹并创建* @param path* @throws IOException*/public static void creatNewFile(String path) throws IOException {File file = new File(path);File fileParent = file.getParentFile();if(!fileParent.exists()){fileParent.mkdirs();}file.createNewFile();}//表格高度private static int high = 20;//表格宽度private static int widthPercentage = 100;public static void pdfOut() throws IOException, DocumentException{String path = "d:/测试.pdf";//判断路径中文件夹是否存在,不存在则自动创建,防止因为文件夹不存在而报错creatNewFile(path);//新建一个pdf文档对象,前一个参数是纸张大小,后四个为边距Document document = new Document(PageSize.A4, 5, 5, 30, 30);PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(path));document.open();//创建字体BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);//字体对象,这里可以创建一个方法Font size14font = new Font(baseFont, 14, Font.BOLD); //大小为14的正常字体Font size10font = new Font(baseFont, 10, Font.NORMAL); //大小为10的正常字体//添加标题//创建第一行表格PdfPTable tableName = new PdfPTable(1);tableName.setWidthPercentage(widthPercentage); //设置标题长度占纸张比例//给表格赋值tableName.addCell(pdfTableStyle("测试pdf", size14font, 50, true, true));//将表格添加到文档对象中document.add(tableName);//表头文字String[] name = new String[]{"序号", "号码", "月份", "消费金额"};//创建第二行,并设置第二行中的表格数PdfPTable twoTable = new PdfPTable(name.length);twoTable.setWidthPercentage(widthPercentage);//该数组是每个表格的宽度float[] floats = new float[name.length];//循环将表头数据添加到第二行表格中for (int i = 0; i < name.length; i++) {twoTable.addCell(pdfTableStyle(name[i], size10font, high, true, true));floats[i] = 0.1f;}//设置表格的宽度twoTable.setTotalWidth(floats);document.add(twoTable);//组装测试数据//DateUtil.thisMonth()使用的是hutool工具类List<Object[]> objectList = new ArrayList<>();for (int i = 0; i < 5; i++) {Object[] objects = new Object[name.length];objects[0] = i + 1;objects[1] = "1318888888" + i;objects[2] = DateUtil.thisMonth() + i + "月";objects[3] = i + 10;objectList.add(objects);}//将数据放入表格中for (int i = 0; i < objectList.size(); i++) {Object[] objects = objectList.get(i);PdfPTable dataTable = new PdfPTable(name.length);dataTable.setWidthPercentage(widthPercentage);dataTable.setTotalWidth(floats);//将数组中的数据按照顺序添加dataTable.addCell(pdfTableStyle(objects[0].toString(), size10font, high, true, true));dataTable.addCell(pdfTableStyle(objects[1].toString(), size10font, high, true, true));dataTable.addCell(pdfTableStyle(objects[2].toString(), size10font, high, true, true));dataTable.addCell(pdfTableStyle(objects[3].toString(), size10font, high, true, true));document.add(dataTable);}document.close();writer.close();

三.效果图

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。