2. html2pdf 使用html或者ftl生产pdf
引入 pom.xml
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>io</artifactId>
<version>7.1.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/kernel -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>kernel</artifactId>
<version>7.1.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/layout -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>layout</artifactId>
<version>7.1.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/styled-xml-parser -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>styled-xml-parser</artifactId>
<version>7.1.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/html2pdf -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>html2pdf</artifactId>
<version>2.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf</artifactId>
<version>9.0.8</version>
</dependency>
主要工具类ITextUtis
package com.ssish.eoms.util;
import com.itextpdf.html2pdf.ConverterProperties;
import com.itextpdf.html2pdf.HtmlConverter;
import com.itextpdf.io.IOException;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfString;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.WriterProperties;
import com.itextpdf.layout.font.FontProvider;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.URISyntaxException;
/**
* @author wyw
* @Description iText工具类
* @date 2019/7/15 15:36
*/
public class ITextUtis {
/**字体构建器*/
private static ConverterProperties fontProps;
/**
* 初始化字体解析器
* @param resourcePrefix
* @return
*/
private static void initConverterProperties(String resourcePrefix) {
fontProps = new ConverterProperties();
FontProvider fp = new FontProvider();
//fp.addStandardPdfFonts();//标准化PDF字体
fp.addDirectory(resourcePrefix);
//fp.addSystemFonts();//添加系统字体
fontProps.setFontProvider(fp);
fontProps.setBaseUri(resourcePrefix);
fontProps.setCharset("UTF-8");
}
/**
* html转pdf文件的方法
* @param html html内容
* @param outFilePath 文件输出位置,如/data/test.pdf
* @return 生成的pdf文件路径
* @throws Exception
*/
public static String html2pdf(String html, String outFilePath) throws Exception {
PdfDocument pdfDoc = null;
FileOutputStream out = null;
PdfWriter pdfWriter = null;
try {
out = new FileOutputStream(outFilePath);
WriterProperties writerProperties = new WriterProperties();
writerProperties.addXmpMetadata();
pdfWriter = new PdfWriter(out, writerProperties);
//创建一个空白PDF文档
pdfDoc = new PdfDocument(pdfWriter);
pdfDoc.setDefaultPageSize(PageSize.A4);//默认A4大小
pdfDoc.getCatalog().setLang(new PdfString("zh-CN"));
if (null == fontProps) {
String fontPath = getResourcesFilePath("template/font/");
System.out.println("FontPath===================" + fontPath);
initConverterProperties(fontPath);
}
//开