package com.stylefeng.guns.modular.system.util.itextpdf;
|
|
import com.itextpdf.html2pdf.ConverterProperties;
|
import com.itextpdf.html2pdf.HtmlConverter;
|
import com.itextpdf.kernel.events.PdfDocumentEvent;
|
import com.itextpdf.kernel.font.PdfFont;
|
import com.itextpdf.kernel.font.PdfFontFactory;
|
import com.itextpdf.kernel.geom.PageSize;
|
import com.itextpdf.kernel.pdf.PdfDocument;
|
import com.itextpdf.kernel.pdf.PdfWriter;
|
import com.itextpdf.layout.font.FontProvider;
|
|
import java.io.FileInputStream;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.io.OutputStream;
|
|
/**
|
* @author zhibing.pu
|
* @Date 2023/8/14 11:13
|
*/
|
public class HtmlToPdfUtils {
|
|
public static void convertToPdf(InputStream inputStream, String waterMark, OutputStream outputStream) throws IOException {
|
|
PdfWriter pdfWriter = new PdfWriter(outputStream);
|
PdfDocument pdfDocument = new PdfDocument(pdfWriter);
|
//设置为A4大小
|
pdfDocument.setDefaultPageSize(PageSize.A4);
|
//添加水印
|
pdfDocument.addEventHandler(PdfDocumentEvent.END_PAGE, new WaterMarkEventHandler(waterMark));
|
|
//添加页码
|
//pdfDocument.addEventHandler(PdfDocumentEvent.END_PAGE,new PageEventHandler());
|
//添加中文字体支持
|
ConverterProperties properties = new ConverterProperties();
|
FontProvider fontProvider = new FontProvider();
|
|
PdfFont sysFont = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
|
fontProvider.addFont(sysFont.getFontProgram(), "UniGB-UCS2-H");
|
|
//添加自定义字体,例如微软雅黑
|
/*if (StringUtils.isNotBlank(fontPath)){
|
PdfFont microsoft = PdfFontFactory.createFont(fontPath, PdfEncodings.IDENTITY_H, false);
|
fontProvider.addFont(microsoft.getFontProgram(), PdfEncodings.IDENTITY_H);
|
}*/
|
|
// properties.setFontProvider(fontProvider);
|
HtmlConverter.convertToPdf(inputStream, pdfDocument, properties);
|
|
pdfWriter.close();
|
pdfDocument.close();
|
}
|
|
|
public static void convertToPdf(String fileName, String waterMark, OutputStream outputStream) throws IOException {
|
InputStream htmlStream = new FileInputStream(fileName);
|
PdfWriter pdfWriter = new PdfWriter(outputStream);
|
PdfDocument pdfDocument = new PdfDocument(pdfWriter);
|
//设置为A4大小
|
pdfDocument.setDefaultPageSize(PageSize.A4);
|
//添加水印
|
pdfDocument.addEventHandler(PdfDocumentEvent.END_PAGE, new WaterMarkEventHandler(waterMark));
|
|
// //添加页码
|
// //pdfDocument.addEventHandler(PdfDocumentEvent.END_PAGE,new PageEventHandler());
|
// //添加中文字体支持
|
// ConverterProperties properties = new ConverterProperties();
|
// FontProvider fontProvider = new FontProvider();
|
//
|
// PdfFont sysFont = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
|
// fontProvider.addFont(sysFont.getFontProgram(), "UniGB-UCS2-H");
|
//
|
// //添加自定义字体,例如微软雅黑
|
// /*if (StringUtils.isNotBlank(fontPath)){
|
// PdfFont microsoft = PdfFontFactory.createFont(fontPath, PdfEncodings.IDENTITY_H, false);
|
// fontProvider.addFont(microsoft.getFontProgram(), PdfEncodings.IDENTITY_H);
|
// }*/
|
//
|
// properties.setFontProvider(fontProvider);
|
HtmlConverter.convertToPdf(htmlStream, pdfDocument);
|
|
pdfWriter.close();
|
pdfDocument.close();
|
}
|
}
|