Java 使用i Text 生成 pdf
iText 是一个非常著名的能够快速产生 PDF 文件的 Java 类库。支持文本,表格,图形的操作,可以方便的跟 Servlet 进行结合。
pom.xml
// 创建一个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();
image.png
pdf文档中添加内容
全局字体设置
// 段落
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);
直线/点线
// 超链接
Anchor anchor = new Anchor(new Paragraph("超链接", titlefont));
anchor.setReference("www.baidu.com");
图片
// 创建一个包含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 listOfDots = new Phrase();
// 位置设置
listOfDots.add(new Chunk(image, 0, 0));
// 表格添加图片
table.addCell(listOfDots);
页眉页脚 和 水印
继承 PdfPageEventHelper
package com.example.demo.pdf;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
/**
* Product
*
* @author wangjun
*/
@Data
public class Product {
private String productName;
private String productCode;
private Integer price;
private String color;
private String remark;
public Product() {
}
public Product(String productName, String productCode, Integer price, String color, String remark) {
this.productName = productName;
this.productCode = productCode;
this.price = price;
this.color = color;
this.remark = remark;
}
public List<Product> getProductList() {
List<Product> products = new ArrayList<>();
for(int i=1;i<100;i++){
Product product1 = new Product("产品"+i, "cp"+i, 120+i, "红色"+i, "大卖"+i);
products.add(product1);
}
Product product = new Product();
product.setColor("222");
products.add(product);
return products;
}
}
// 页眉页脚
package com.example.demo.pdf;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.itextpdf.text.Anchor;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.draw.DottedLineSeparator;
import com.itextpdf.text.pdf.draw.LineSeparator;
import lombok.extern.slf4j.Slf4j;
/**
* 标题
*
* @author wangjun
*/