iText 是一个非常著名的能够快速产生 PDF 文件的 Java 类库。支持文本,表格,图形的操作,可以方便的跟 Servlet 进行结合
pom.xml
<dependency> <groupId>com.itextpdfgroupId> <artifactId>itextpdfartifactId> <version>5.5.13version>dependency><dependency> <groupId>com.itextpdfgroupId> <artifactId>itext-asianartifactId> <version>5.2.0version>dependency>
Test
快速创建一个pdf
// 创建一个Document对象(pdf文档) A4纸张大小Document document = new Document(PageSize.A4);// 建立一个书写器(Writer)与document对象关联PdfWriter.getInstance(document, new FileOutputStream("D:\\Test.pdf"));// 打开文档document.open();// 向文档中输入一个内容 document.add(new Paragraph("Hello World"));// 关闭文档document.close();
PDF文档中添加内容
全局字体设置
/*** 定义全局的字体静态变量 */private static Font titlefont;private static Font headfont;private static Font keyfont;private static Font textfont;/** * 最大宽度 */private static int maxWidth = 520;/* 静态代码块*/static { try { // 不同字体(这里定义为同一种字体:包含不同字号、不同style) BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); titlefont = new Font(bfChinese, 16, Font.BOLD); headfont = new Font(bfChinese, 14, Font.BOLD); keyfont = new Font(bfChinese, 10, Font.BOLD); textfont = new Font(bfChinese, 10, Font.NORMAL); } catch (Exception e) { e.printStackTrace(); }}
段落
// 段落Paragraph paragraph = new Paragraph("Hello I Text 5", titlefont);//设置文字居中 0靠左 1,居中 2,靠右paragraph.setAlignment(1);//设置左缩进paragraph.setIndentationLeft(12);//设置右缩进paragraph.setIndentationRight(12);//设置首行缩进paragraph.setFirstLineIndent(24);//行间距paragraph.setLeading(20f);//设置段落上空白paragraph.setSpacingBefore(5f);//设置段落下空白paragraph.setSpacingAfter(10f);
直线/点线
// 直线Paragraph p1 = new Paragraph();p1.add(new Chunk(new LineSeparator()));// 点线Paragraph p2 = new Paragraph();p2.add(new Chunk(new DottedLineSeparator()));
超链接
// 超链接Anchor anchor = new Anchor(new Paragraph("超链接", titlefont));anchor.setReference("www.baidu.com");
图片
// 添加图片Image image = Image.getInstance("http://devb2b.hosjoy.com/img/hosjoy_logo48@2x.595a425a.png");// 位置image.setAlignment(Image.ALIGN_CENTER);// 依照比例 缩放image.scalePercent(20);
表格PdfPTable
// 创建一个包含5列的表格PdfPTable table = new PdfPTable(5);// 创建一个宽度比例表格PdfPTable table = new PdfPTable(new float[]{
10, 12, 12, 10, 10});// 表格最大像素table.setTotalWidth(maxWidth);// 锁定宽度table.setLockedWidth(true);// 水平居中table.setHorizontalAlignment(Element.ALIGN_CENTER);// 表格边框 配合 单元格设置table.getDefaultCell().setBorder(1);// 创建单元格PdfPCell cell = new PdfPCell();// 垂直对齐设置cell.setVerticalAlignment(Element.ALIGN_MIDDLE);// 水平对齐设置cell.setHorizontalAlignment();// 合并单元格cell.setColspan(1);// 合并单元格cell.setRowspan(1);// 内容cell.setPhrase(new Phrase(value, font));// 边框设置cell.setBorder(Rectangle.NO_BORDER);// 背景颜色设置cell.setBackgroundColor(baseColor);// 将单元格加入表格table.addCell(cell) // 表格添加图片Image image = Image.getInstance("http://devb2b.hosjoy.com/img/hosjoy_logo48@2x.595a425a.png");image.setAlignment(Image.ALIGN_LEFT);Phrase listO