关于点击生成pdf文件并下载到本地的功能

49次阅读

共计 1079 个字符,预计需要花费 3 分钟才能阅读完成。

后端
引入模块
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.body
a.href = url
a.download = esignature_lh.ciphertext + “.pdf”
a.click()
window.URL.revokeObjectURL res.body

正文完
 0