<!-- html转PDF -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>kernel</artifactId>
<version>7.1.1</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>layout</artifactId>
<version>7.1.1</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>html2pdf</artifactId>
<version>2.0.1</version>
</dependency>
public class ItextPDFUtil {
public static void main(String[] args) {
String htmlStr = null;
InputStream inputStream = null;
PdfDocument pd = null;
try {
// 读取html的流
inputStream = new FileInputStream(new File("F:/协议.html"));
// 流转换成字符串
StringBuffer out = new StringBuffer();
byte[] b = new byte[4096];
for (int n; (n = inputStream.read(b)) != -1;) {
out.append(new String(b, 0, n));
}
htmlStr = out.toString();
String pdffile = "F:/test.pdf";
pd = new PdfDocument(new PdfWriter(new FileOutputStream(new File(pdffile))));
// 设置文件标题为fileName,web上展示的标题为此标题
pd.getDocumentInfo().setTitle(pdffile);
}
catch (Exception e) {
e.printStackTrace();
}
Document document = new Document(pd, PageSize.A4);
try {
// 导入字体
FontProvider font = new FontProvider();
font.addFont("F:/SimSun.ttf");
ConverterProperties c = new ConverterProperties();
c.setFontProvider(font);
c.setCharset("utf-8");
// 设置页面边距 必须先设置边距,再添加内容,否则页边距无效
document.setMargins(50, 0, 50, 0);
List<IElement> list = HtmlConverter.convertToElements(htmlStr, c);
for (IElement ie : list) {
document.add((IBlockElement) ie);
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
document.close();
}
}
public static void htmlToPdf(String html, OutputStream outStream, String fontPath) {
PdfDocument pd = null;
Document document = null;
try {
pd = new PdfDocument(new PdfWriter(outStream));
// 导入字体
FontProvider font = new FontProvider();
font.addStandardPdfFonts();
font.addFont(fontPath);
ConverterProperties c = new ConverterProperties();
c.setFontProvider(font);
c.setCharset("utf-8");
// 设置页面边距 必须先设置边距,再添加内容,否则页边距无效
document = new Document(pd, PageSize.A4, true);
document.setMargins(50, 0, 40, 0);
List<IElement> list = HtmlConverter.convertToElements(html, c);
for (IElement ie : list) {
document.add((IBlockElement) ie);
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
document.close();
}
}