不为别的,只为做一个连自己都羡慕的人

文章内容过长,将此内容转为pdf的方式(使用node)

第一步:先下载 html-pdf,命令为 npm i html-pdf -D

var pdf = require('html-pdf');

第二部:创建一个pdf模板

var html1 = fs.readFileSync('./routes/1.html','utf8')  //模板1

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<style>
    em {
        font-style: normal;
    }
    .details-box {
        padding: 15px;
    }

    .details-telit h2 {
        font-size: 20px;
        text-align: center;
    }

    .details-source {
        text-align: center;
        font-size: 14px;
        margin-top: 30px;
    }

    .details-source span {
        padding: 0 15px;
        color: #666;
    }

    /* 标题 */
    .details-title {
        font-size: 18px;
        padding: 0;
        border-bottom: 1px solid #ccc;
        position: relative;
        padding-left: 20px;
        padding-bottom: 8px;
    }
    /* 内容 */
    .details-matters {
        padding: 30px 0;
        text-align: justify;
        font-size: 12px;
        line-height: 28px;
        color: #666;
    }
    .details-title::after {
        content: '';
        width: 5px;
        background: #121937;
        position: absolute;
        top: 3px;
        bottom: 11px;
        left: 0;
    }
    .tedt-hhs {
        color: #666666;
    }
</style>
<body>
  <div class="details-box">
    <div class="details-telit">
      <h2>
        __title__

      </h2>
    </div>
    <div class="details-matter">
      <div class='details-title'>
        内容
       </div>
       <div class="details-matters">
        __content__
       </div>
    </div>
  </div>
</body>

</html>
var html = fs.readFileSync('./routes/2.html','utf8')  //模板2
第三步:对模板转为pdf文件的方法进行封装:
// 生成pdf
function createPDFProtocolFile(template, options, reg, filename) {
    /**
      template: html 模板
      options: 配置
      reg: 正则匹配规则
      filename: 输出pdf文件路径及文件名
    */
      // 将所有匹配规则在html模板中匹配一遍
      if (reg && Array.isArray(reg)) {
        reg.forEach(item => {
          template = template.replace(item.relus, item.match);
        });
      }
      pdf
      .create(template, options).toFile(filename, function(err, res) {
          if (err) {
            console.log(err);
              return err
          }
          console.log(res);
      })
}

第四步:使用代码生成pdf文件

var options = {
    "format": 'A4',
    "header": {
    "height": "10mm",
    "contents": ''
}}; // 一些配置// 匹配规则
var reg = [
  {
     relus: /__title__/g,
     match: info[0].title
  },
   {
      relus: /__content__/g,
      match: selectConRs[0].content
   }
];
createPDFProtocolFile(html, options, reg, './public/pdf/'+id+'.pdf'); // 传入参数 生成pdf

 第五步:以上步骤操作完成,就可以实现将文章内容写进html页面,最终转为pdf。

 
posted @ 2020-08-26 14:08  升级打怪  阅读(448)  评论(0编辑  收藏  举报