Node.js Chrome/Puppeter中是否有与PhantomJS api.readPdf()等效的函数?
我是一个新手,在NodeJs和木偶演员。 我正在升级一个旧的PhantomJs pdf报表生成器。 幻影工作流以以下方式读取PDFNode.js Chrome/Puppeter中是否有与PhantomJS api.readPdf()等效的函数?,node.js,phantomjs,chromium,puppeteer,Node.js,Phantomjs,Chromium,Puppeteer,我是一个新手,在NodeJs和木偶演员。 我正在升级一个旧的PhantomJs pdf报表生成器。 幻影工作流以以下方式读取PDF api.readPdf(result.file) .then(function(data) { return({ page: result.page, file: result.
api.readPdf(result.file)
.then(function(data) {
return({ page: result.page,
file: result.file,
data: data
});
});
并使用结果的.data下载Pdf
在使用Puppeter时,我能够使用以下代码示例生成Pdf
async function timeout(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
(async ()=>{
const browser = await puppeteer.launch();
const page = await browser.newPage();
var paramData = completeParamData(reportParam);
await page.goto(reportParam.templateUrl,{ waitUntil: 'networkidle2' });
await page.emulateMedia('screen');
await page.evaluate(doInjectParams, reportParam);
await timeout(5000);
var ts = new Date().getTime();
await page.evaluate(() => { window.scrollBy(0, window.innerHeight); })
await page.pdf({
path:`mydoc_${ts}.pdf`,
format: 'A4',
printBackground:true
});
//**this data I dont want to fetch using the PhantomJS api**
const data = await api.readPdf(`mydoc_${ts}.pdf`)
.then(function(data) {
console.log(data);
return data;
});
await workflowDone(null,
{ data: data,
filename: `mydoc_${ts}.pdf`,
download: sanitize(`mydoc_${ts}.pdf`)});
})();
pdf生成很成功,我的文件也在下载中,您能告诉我是否有其他方法可以替代使用Puppeter或其他api的api.readPdf()。不,我认为这超出了Puppeter的范围。是否要获取生成的pdf字节?这就是
readPdf
所做的吗?@slava谢谢,但我想获取文件字节。我认为使用它可以解决我的问题var readFile=Q.denodeify(fs.readFile);返回readFile(文件名,{encoding:'base64'})
@SubhadipPal您为什么要在文件系统中存储PDF,并且在尝试读取PDF之后?根据page.pdf
返回承诺,使用pdf缓冲区解析。只要您有它,您就可以将它发送到内容类型为application/pdf
的浏览器,如果您需要在数据URL中使用它,或者执行base64编码,包括保存到文件中。@Slavavivanov谢谢您会尝试您的建议。否,我认为这超出了木偶演员的范围。你想得到生成的PDF字节吗?这就是readPdf
所做的吗?@slava谢谢,但我想获取文件字节。我认为使用它可以解决我的问题var readFile=Q.denodeify(fs.readFile);返回readFile(文件名,{encoding:'base64'})
@SubhadipPal您为什么要在文件系统中存储PDF,并且在尝试读取PDF之后?根据page.pdf
返回承诺,使用pdf缓冲区解析。只要您有它,您就可以将它提供给内容类型为application/pdf
的浏览器,如果您需要它在数据URL中使用,或者您想做的任何事情,包括保存到文件中,请执行base64编码。@Slavivanov,谢谢您尝试您的建议。