使用iText7生成pdf文件

xiaoxiao2025-09-05  394

      在写自动生成数据库设计Word文档文章后,朋友建议再实现生成pdf格式,并推荐的iText7,我花了点时间学习了一下itext,实现了这个功能。

首先引入依赖

<dependency> <groupId>com.itextpdf</groupId> <artifactId>itext7-core</artifactId> <version>7.0.2</version> <type>pom</type> </dependency>

生成PDF的方法

public String createPdf(List<TableVo> tables) { try { PdfDocument pdfDoc = new PdfDocument( new PdfWriter(System.getProperty("user.dir") + "\\DatabaseDesign.pdf")); Document doc = new Document(pdfDoc);// 构建文档对象 TextFooterEventHandler eh = new TextFooterEventHandler(doc); pdfDoc.addEventHandler(PdfDocumentEvent.END_PAGE, eh); // 中文字体 PdfFont sysFont = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", false); Paragraph paragraph = new Paragraph(); paragraph.add("数据库设计文档").setFont(sysFont).setBold().setFontSize(20).setTextAlignment(TextAlignment.CENTER); doc.add(paragraph); int num = 0; for (TableVo vo : tables) { num++; doc.add(new Paragraph("")); String title = num +" 表名:" + vo.getTableName() + " 表注释:" + vo.getTableComment(); doc.add(new Paragraph(title).setFont(sysFont).setBold()); // 构建表格以100%的宽度 Table table = new Table(5).setWidth(UnitValue.createPercentValue(100)); table.addCell(new Cell().add(new Paragraph("列名")).setFont(sysFont) .setBackgroundColor(new DeviceRgb(221, 234, 238))); table.addCell(new Cell().add(new Paragraph("数据类型")).setFont(sysFont) .setBackgroundColor(new DeviceRgb(221, 234, 238))); table.addCell(new Cell().add(new Paragraph("约束")).setFont(sysFont) .setBackgroundColor(new DeviceRgb(221, 234, 238))); table.addCell(new Cell().add(new Paragraph("允许空")).setFont(sysFont) .setBackgroundColor(new DeviceRgb(221, 234, 238))); table.addCell(new Cell().add(new Paragraph("备注")).setFont(sysFont) .setBackgroundColor(new DeviceRgb(221, 234, 238))); for (ColumnVo col : vo.getColumns()) { table.addCell(new Cell().add(new Paragraph(col.getColumnName())).setFont(sysFont)); table.addCell(new Cell().add(new Paragraph(col.getColumnType())).setFont(sysFont)); table.addCell(new Cell().add(new Paragraph(col.getColumnKey())).setFont(sysFont)); table.addCell(new Cell().add(new Paragraph(col.getIsNullable())).setFont(sysFont)); table.addCell(new Cell().add(new Paragraph(col.getColumnComment())).setFont(sysFont)); } // 将表格添加入文档并页面居中 doc.add(table.setHorizontalAlignment(HorizontalAlignment.CENTER)); } doc.close(); return "文件路径-" + System.getProperty("user.dir") + "\\DatabaseDesign.pdf"; } catch (Exception e) { e.printStackTrace(); } return "导出失败!请检查配置。"; }

这里生成的是含有表格的PDF文件,我给大家看一下效果

 详细代码可以到github上下载:https://github.com/daiwenlong/mindoc

转载请注明原文地址: https://www.6miu.com/read-5035774.html

最新回复(0)