我正在使用jsreport Chrome-PDF配方在Node.js中生成PDF。我加载了一个外部HTML文件,并将其用作报告的模板,然后将生成的报告通过管道传送回浏览器。我的设置如下:
await jsReport.init()
try {
const out = await jsReport.render({
template: {
content: html,
engine: 'handlebars',
recipe: 'chrome-pdf',
chrome: {
format: 'Letter',
printBackground: true,
marginTop: '0.25in',
marginRight: '0.5in',
marginBottom: '0.25in',
marginLeft: '0.5in'
}
},
data: {
myData: myData
}
})
return out.stream.pipe(res)
} catch(err) {
return res.status(500).send(err)
}
PDF将加载到浏览器中,看起来很棒!但是,当我保存报告时,文件大小约为25 MB。渲染的PDF中有一些图像,但这显然比需要的要大。
我可以获取文件并通过Smallpdf或Acrobat之类的服务运行该文件,文件大小不到200 KB。有什么方法可以减少流到客户端之前的初始文件大小?我希望避免客户每次生成报告时都必须使用外部软件,也希望避免使用第三方API来进行收费压缩。