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

    }
  • 相关阅读:
    Jmeter之参数化
    安全测试-业务安全的些许“瞎说”
    (转)LR性能测试结果样例分析
    (转)使用 Nmon 监控 Linux 的系统性能
    Jmeter之断言
    自动化框架httpClient实例
    RabbitMQ集群 Docker一键部署
    使用swing构建一个界面(包含flow ,Border,Grid,card ,scroll布局)
    Jtable实现
    java 使用最新api操作mongodb
  • 原文地址:https://www.cnblogs.com/shenggege5240/p/10063090.html
Copyright © 2020-2023  润新知