zoukankan      html  css  js  c++  java
  • 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();
    }

    }
  • 相关阅读:
    s=a+aa+aaa+aaaa+aa...aaaa
    ibatis入门
    ibatis多参数的问题
    异步分页ajax
    8M的摄像头,30fps摄像时,60hz的LCD刷新频率,请问camera每秒向BB传输多少数据,如何计算
    android tcp通讯
    為什麼我的手機連Wi-Fi速度總是卡在75Mbps?Wi-Fi速度解惑~帶你一次看懂!
    mbps和MB/s是怎么换算的
    简说各种wifi无线协议的传输速率
    mil,mm与inch之间的转换
  • 原文地址:https://www.cnblogs.com/shenggege5240/p/10063090.html
Copyright © 2011-2022 走看看