【发布时间】:2019-12-03 19:05:17
【问题描述】:
所以,我编写了一个小代码,使用名为Wkhtmltopdf的库将 html 字符串转换为 pdf
这是我写的代码:
index.js
const express = require('express')
const app = express()
app.use(express.json())
const port = 3000
const compiledHtml = '<h1> This is testing </h1>'
app.post('/gc', async (req, res) => {
wkhtmltopdf(compiledHtml, {
pageSize: 'A4',
orientation: 'Landscape',
marginLeft: '1mm',
marginTop: '1mm'
}).pipe(fs.createWriteStream('out.pdf')) //--->(A)
console.log('All done')
res.send(compiledHtml)
})
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
在这段代码中,我创建了 REST 调用、POST,它们生成 pdf 并保存在名为 out.pdf 的文件中(上面的等式 (A))在运行脚本的同一文件夹中。
但实际上我想在 内存 中生成 pdf,获取相同的 缓冲区 并 返回缓冲区到客户端,以便浏览器开始下载文件,我也有一个代码,这是在 response 中返回 buffer 的代码快递
sn-p
......
......
res.writeHead(200, {
'Content-Type': 'application/pdf',
'Content-disposition': 'attachment;filename=certificate.pdf',
'Content-Length': buffer.length,
})
res.end(buffer)
......
......
通过上面的代码,我们可以将二进制数据写回客户端,客户端可以将其保存到任何他想要的地方。
但主要的问题是如何获取正在生成的文件的缓冲区。
请提供一些轻松愉快的编码:)
【问题讨论】:
标签: node.js express pdf wkhtmltopdf