一、環境
node版本為v8.11.2
typescript版本為^3.0.0
html-pdf版本為^2.2.0
二、需求
html轉pdf,並且添加頁碼
三、實現
由於需要在node端實現該需求,因此尋找了一下html轉pdf的依賴,發現各式各樣的還是蠻多的,從以前的項目里發現了一個html-pdf的依賴,也就直接拿來用用看。
配置直接參考https://www.npmjs.com/package/html-pdf上面,已經很詳細了。
其實現本質上還是需要前端將渲染好的html源碼,包括樣式等作為字符串傳到node端,然后直接調用依賴中的方法導出pdf即可,工作量主要還是在前端的處理上。
node端代碼如下:
@PostMapping('/xhr/downloadPDF') async downloadPDF( ctx: Context ) { const html: string = ctx.request.body.html as string; ctx.body = await new Promise((resolve, reject) => { create(html + '', { format: 'A4', border: '10px', httpHeaders: { Cookie: ctx.request.headers.cookie }, base: `http://127.0.0.1:${9123}`, type: 'pdf', footer: { height: '10mm', contents: { default: '<span style="color: #444;">{{page}}</span>/<span>{{pages}}</span>' // fallback value } } }).toStream((err, stream) => { if (err) reject(err); resolve(stream); }); }); }