html或者jsp转pdf文档

朴灿烈づ我的快乐病毒、 2023-07-04 15:59 64阅读 0赞

一、代码

  1. package com.citydo.checkandbigdataquery.mq;
  2. import com.itextpdf.text.Document;
  3. import com.itextpdf.text.DocumentException;
  4. import com.itextpdf.text.Paragraph;
  5. import com.itextpdf.text.pdf.BaseFont;
  6. import com.itextpdf.text.pdf.PdfWriter;
  7. import lombok.extern.slf4j.Slf4j;
  8. import org.xhtmlrenderer.pdf.ITextFontResolver;
  9. import org.xhtmlrenderer.pdf.ITextRenderer;
  10. import java.io.File;
  11. import java.io.FileNotFoundException;
  12. import java.io.FileOutputStream;
  13. import java.io.OutputStream;
  14. @Slf4j
  15. public class htmlToPdf {
  16. /** * 将HTML转成PD格式的文件。html文件的格式比较严格 * @param htmlFile * @param pdfFile * @throws Exception */
  17. public static void html2pdf(String htmlFile, String pdfFile) throws Exception {
  18. // step 1
  19. String url = new File(htmlFile).toURI().toURL().toString();
  20. // step 2
  21. OutputStream os = new FileOutputStream(pdfFile);
  22. ITextRenderer renderer = new ITextRenderer();
  23. renderer.setDocument(url);
  24. // step 3 解决中文支持
  25. ITextFontResolver fontResolver = renderer.getFontResolver();
  26. if("linux".equals(getCurrentOperatingSystem())){
  27. fontResolver.addFont("/usr/share/fonts/chiness/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
  28. }else{
  29. fontResolver.addFont("c:/Windows/Fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
  30. }
  31. renderer.getSharedContext().setBaseURL("file:/E:/test/m/");//本地文件
  32. //renderer.getSharedContext().setBaseURL("http://www.jiajiajia.club:8089/img/photo/");//网络文件
  33. renderer.layout();
  34. renderer.createPDF(os);
  35. os.close();
  36. System.out.println("create pdf done!!");
  37. }
  38. public static String getCurrentOperatingSystem(){
  39. String os = System.getProperty("os.name").toLowerCase();
  40. return os;
  41. }
  42. // public static void main(String[] args) {
  43. // String htmlFile = "E:\\test\\m\\a.html";
  44. // String pdfFile = "E:\\test\\m\\a.pdf";
  45. // String htmlFile = "c:/sign.jsp";
  46. // String pdfFile = "c:/sign.pdf";
  47. // try {
  48. // htmlToPdf.html2pdf(htmlFile, pdfFile);
  49. // } catch (FileNotFoundException e) {
  50. // e.printStackTrace();
  51. // } catch (Exception e) {
  52. // e.printStackTrace();
  53. // }
  54. // }
  55. /** * @param args */
  56. public static void main(String[] args) {
  57. Document document = new Document();
  58. try {
  59. PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("D:\\lean\\test.pdf"));
  60. document.open();
  61. document.add(new Paragraph("A Hello World PDF document."));
  62. document.close();
  63. writer.close();
  64. } catch (DocumentException e) {
  65. e.printStackTrace();
  66. } catch (FileNotFoundException e) {
  67. e.printStackTrace();
  68. }
  69. }
  70. }

二、相关依赖

  1. <!-- html转pdf-->
  2. <dependency>
  3. <groupId>com.itextpdf</groupId>
  4. <artifactId>itextpdf</artifactId>
  5. <version>5.5.9</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>com.itextpdf.tool</groupId>
  9. <artifactId>xmlworker</artifactId>
  10. <version>5.5.9</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>com.itextpdf</groupId>
  14. <artifactId>itext-asian</artifactId>
  15. <version>5.2.0</version>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.xhtmlrenderer</groupId>
  19. <artifactId>flying-saucer-pdf-itext5</artifactId>
  20. <version>9.1.20</version>
  21. </dependency>

三、解决 Command line is too long. Shorten command line for htmlToPdf or also for Application default configu 报错

  1. <component name="PropertiesComponent">

代码下面添加

  1. <property name="dynamic.classpath" value="true" />

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,64人围观)

还没有评论,来说两句吧...

相关阅读

    相关 HTMLPDF

    最近又用到HTML转PDF的功能,而且需要对PDF进行定制,需要页眉页脚的 经过调查最终还是感觉wkhtmltopdf比较好,中间还经历了使用Google浏览器直接转pdf