Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Chrome/Puppeter中是否有与PhantomJS api.readPdf()等效的函数?_Node.js_Phantomjs_Chromium_Puppeteer - Fatal编程技术网

Node.js Chrome/Puppeter中是否有与PhantomJS api.readPdf()等效的函数?

Node.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.

我是一个新手,在NodeJs和木偶演员。 我正在升级一个旧的PhantomJs pdf报表生成器。 幻影工作流以以下方式读取PDF

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,谢谢您尝试您的建议。