网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

如何在java中利用富文本生成pdf文件

如何在java中利用富文本生成pdf文件?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

创新互联建站专业为企业提供轵城网站建设、轵城做网站、轵城网站设计、轵城网站制作等企业网站建设、网页设计与制作、轵城企业网站模板建站服务,10多年轵城做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

public class PdfUtil {

  public static Boolean htmlToPdf(GuideBook guideBook, String pdfPath) {
    try {
      // 1.新建document
      Document document = new Document();
      // 2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。
      //创建 PdfWriter 对象 第一个参数是对文档对象的引用,第二个参数是文件的实际名称,在该名称中还会给出其输出路径。
      PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(pdfPath));
      // 3.打开文档
      document.open();
      //要解析的html
      //html转换成普通文字,方法如下:
      org.jsoup.nodes.Document contentDoc = Jsoup.parseBodyFragment(getHtml(guideBook.getTitle())+guideBook.getContent());
      org.jsoup.nodes.Document.OutputSettings outputSettings = new org.jsoup.nodes.Document.OutputSettings();
      outputSettings.syntax(org.jsoup.nodes.Document.OutputSettings.Syntax.xml);
      contentDoc.outputSettings(outputSettings);
      String parsedHtml = contentDoc.outerHtml();
      //这儿的font-family不支持汉字,{font-family:仿宋} 是不可以的。
      InputStream cssIs = new ByteArrayInputStream("* {font-family: PingFang-SC-Medium.otf;}".getBytes("UTF-8"));
      //第四个参数是html中的css文件的输入流
      //第五个参数是字体提供者,使用系统默认支持的字体时,可以不传。
      XMLWorkerHelper.getInstance().parseXHtml(writer, document, new ByteArrayInputStream(parsedHtml.getBytes()), cssIs);
      // 5.关闭文档
      document.close();
    } catch (Exception e) {
      e.printStackTrace();
      return false;
    }
    return true;
  }

  /*
   * 下载文件
   **/
  public static void download(HttpServletRequest request, HttpServletResponse response, InputStream inputStream, String fileName){
    BufferedOutputStream bos = null;
    try {
      // 定义输出缓冲 10k
      byte[] buffer = new byte[10240];
      //文件名称的处理
      // http://127.0.0.1:5002/guide-book/pdf?id=124
      fileName = fileName.replaceAll("[\\pP\\p{Punct}]", "-").replace(" ", "-").replaceAll("[-]+", "-")+".pdf";
      String userAgent = request.getHeader("user-agent").toLowerCase();
      if (userAgent.contains("msie") || userAgent.contains("like gecko")) {
        fileName = URLEncoder.encode(fileName, "UTF-8");
      } else {
        fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
      }
      response.setCharacterEncoding("utf-8");
      response.setContentType("application/msword");
      response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
      bos = new BufferedOutputStream(response.getOutputStream());
      int bytesRead = 0;
      while ((bytesRead = inputStream.read(buffer)) != -1) {
        bos.write(buffer, 0, bytesRead);
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (bos != null) {
        try {
          bos.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
  }

  /*
   * 获取html
   **/
  public static String getHtml(String title){
    return ""+title+"";
  }

}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。


分享名称:如何在java中利用富文本生成pdf文件
URL地址:http://bjjierui.cn/article/peijos.html

其他资讯