html导出pdf

<!-- 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();
}

}
posted @ 2018-12-04 11:27  Roger胜  阅读(574)  评论(0编辑  收藏  举报