后端引入模块async = require ‘async’fs = require ‘fs’写入文件writeFile = (address, str, cbf) -> write = fs.writeFileSync(address,str) return cbf null, write生成html文件htmlFile = (address, option, cbf) -> html = fs.readFileSync(address,option) return cbf null, html生成pdf文件pdfFile = (html, address, cbf) -> # console.log “html”,html options = { format: ‘A3’ } pdf.create html, options .toFile address, (err, res) -> if (err) return console.log err return cbf null,“success"删除html文件deteleHtml = (address, cbf) -> fs.unlink address, (err,res) -> if (err) return console.log err return cbf null, ‘detele success’调用funcs = [ # 写入文件 (cbf) -> return writeFile htmlAdr, params.str, cbf # 生产html文件 (result1,cbf) -> return htmlFile htmlAdr, ‘utf-8’, cbf # 生产pdf文件 (result2,cbf) -> return pdfFile result2, pdfAdr, cbf # 删除html文件 (result3,cbf) -> return deteleHtml htmlAdr, cbf]async.waterfall funcs, (error, result) -> if error return cbf error, null # 返回用户信息 res.download pdfAdr, fileName前端a(href=“javascript:;” v-on:click.stop.prevent=“onDownEsignatureLh(esignature_lh);”) 下载a = document.createElement “a"url = window.URL.createObjectURL res.bodya.href = urla.download = esignature_lh.ciphertext + “.pdf"a.click()window.URL.revokeObjectURL res.body