使用Itext7+thymeleaf 實現html轉PDF功能

使用Itext7+thymeleaf 實現html轉PDF功能
html

方案:ide

  1:導入依賴字體

  2:準備字體、導出文件的路徑、寫好Thymeleaf的html模板spa

  3:設置字體,字符集htm

  4:設置傳入Thymeleaf的html模板參數對象

  5:在導出的目錄下建立一個pdf文件模板引擎

  6:將html元素轉換到PDF中utf-8

    [Maven: com.itextpdf:layout:7.1.7] 文檔

      com.itextpdf.layout.font.FontProvider  ### 支持自定義字體,中文及加粗(引入字體時須要用英文名稱)get

      FontProvider fontProvider = new FontProvider();
      fontProvider.addFont(fontProvider.getClass().getClassLoader().getResource("font/simsun.ttf").getPath());
      fontProvider.addFont(fontProvider.getClass().getClassLoader().getResource("font/simhei.ttf").getPath());
      fontProvider.addStandardPdfFonts();

    [Maven: com.itextpdf:html2pdf:2.1.5]

      com.itextpdf.html2pdf.ConverterProperties ### 設置屬性,包括字體,字符集等

      ConverterProperties converterProperties = new ConverterProperties();
      converterProperties.setFontProvider(fontProvider);
      converterProperties.setCharset("utf-8");

    [Maven: org.thymeleaf:thymeleaf:3.0.11.RELEASE]

      org.thymeleaf.context.Context ### 設置傳入Thymeleaf的html模板參數

      Context ctx = new Context();
      ctx.setVariable("baseUrl", (String)extraMap.get("baseUrl"));

    建立一個PDF文件,並將html元素轉換到PDF中

    [Maven: com.itextpdf:layout:7.1.7]

      com.itextpdf.layout.Document  ### 建立PDF文檔對象

    [Maven: com.itextpdf:html2pdf:2.1.5]

      com.itextpdf.html2pdf.HtmlConverter   ### html轉換器將html->pdf

    [Maven: org.thymeleaf:thymeleaf:3.0.11.RELEASE]

      org.thymeleaf.ThmplateEngine  ### thymeleaf模板引擎類,將html模板轉化爲String

    //中文Invoice
    File invoiceFileZh = new File("PDF路徑.pdf");
    Document documentZh = new Document(new PdfDocument(new PdfWriter(new FileOutputStream(invoiceFileZh))), PageSize.A4);
    documentZh.setMargins(10, 20, 10, 20);//設置邊距
    HtmlConverter.convertToElements(templateEngine.process("invoice/en.html", ctx), converterProperties)
            .stream().forEach(iElement -> documentZh.add((IBlockElement) iElement));    documentZh.close(); 關閉文檔流
相關文章
相關標籤/搜索