使用Puppeteer合并PDF后前端获取到空白PDF的问题求助
使用Puppeteer合并PDF后前端获取到空白PDF的问题求助
大家好,我最近碰到一个头疼的问题:我用Puppeteer生成了多个PDF,把每个PDF都以buffer的形式存在变量里,接着写了个combinePDFs函数,想通过Puppeteer把这些buffer合并成单个PDF返回给前端,但前端拿到的却是空白PDF,实在找不到问题出在哪,麻烦各位帮忙看看!
以下是我的后端代码:
async function combinePDFs(pdfBuffers) { const browser = await puppeteer.launch({ headless: "new", args: [ "--no-sandbox", "--disable-setuid-sandbox", "--font-render-hinting=none", ], }); const page = await browser.newPage(); const combinedPDFBuff = Buffer.concat(pdfBuffers); await page.setContent(`<embed src="data:application/pdf;base64,${combinedPDFBuff.toString('base64')}" type="application/pdf" />`, { waitUntil: 'domcontentloaded', }); await page.emulateMediaType('screen'); await page.setViewport({ width: 1200, height: 800 }); const combinedPDFBuffer = await page.pdf({ format: 'A4', printBackground: true, preferCSSPageSize: true, }); await browser.close(); return combinedPDFBuffer } // 接口返回部分 const combineResultBuff = await combinePDFs(pdfBuff) console.log("object",combineResultBuff); res.setHeader("Content-Type","application/pdf"); res.send(combineResultBuff)
前端获取PDF的代码如下:
const config = { url: process.env.REACT_APP_BASE_URL + `/order/way_bill_generate`, method: "post", headers: { secret_key: process.env.REACT_APP_SECRET_KEY, Authorization: `Bearer ${token}`, }, responseType: "blob", data: { data: saveData, }, }; setLoading(true) try { const wayBill = await axios(config); const blob = new Blob([wayBill.data], { type: "application/pdf" }); const url = URL.createObjectURL(blob); setPDFUrl(url); setLoading(false) } catch (err) { console.log(err); setLoading(false) }
后端打印combineResultBuff能看到有数据,但前端生成的Blob打开后就是空白的,实在摸不着头绪,有没有大佬能帮忙分析下原因或者给个解决方案?
备注:内容来源于stack exchange,提问作者Abhishek Poddar
相关产品推荐
相关产品推荐

