木偶的PDF没有保存"/>
生成与操纵木偶的PDF没有保存
我有node.js
编写的应用程序托管在heroku
和我的前端应用程序是用Vue.js
,它是hostinger
。我想知道,如果是有可能产生与操纵木偶的PDF文件,并立即将其发送给客户端前端没有把它保存到磁盘第一?如果是的话,你可以给我如何做它的一些例子吗?
目前,我的职责是这样的:
exports.gerarPDFAvaliacao = async (dadosAvaliacao) => {
try {
const compile = async (fileName, data) => {
const filePath = path.join(process.cwd(), 'src/templates/client/operation/', `${fileName}.hbs`);
const html = await fs.readFile(filePath, 'utf-8');
return await hbspile(html)(data);
}
const browser = await puppeteer.launch();
const page = await browser.newPage();
let content = await compile('avaliations', dadosAvaliacao);
await page.goto(`data:text/html,${content}`, { waitUntil: 'networkidle0' });
await page.emulateMedia('screen');
await page.pdf({
path: 'src/dist/pdf/' + dadosAvaliacao.arquivo + '.pdf',
format: 'A4',
printBackground: true
})
await browser.close();
return dadosAvaliacao.arquivo + '.pdf';
} catch (error) {
console.log('Errors => ', error);
}
};
回答如下:
据official documentation,如果你不提供路径的文件将不会被保存到磁盘。
page.pdf(选择):选择对象,它可能具有以下属性:路径的文件路径PDF保存。如果路径是相对路径,则相对于当前工作目录解析。如果没有提供路径,PDF将不会被保存到磁盘。
这意味着它应该返回类似的缓冲区或生成的文件的二进制表示。你只需要到或管道返回到响应,这取决于你所使用的架构。
这只是输出PDF到控制台:
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example');
console.log(await page.content());
const pdf = await page.pdf();
await browser.close();
console.log(pdf) // maybe do response(pdf).type('x-pdf')
编辑:这是使用快递和操纵傀儡直接在内存中返回PDF内容一个完整的例子。它运行在runkit,所以我想的一样限制应用(甚至更多)。如果您导航到的例子有,你可以看到浏览器是如何检测到它是一个PDF文件,并可以正确显示,它的公共端点。
- 公共网址:https://puppeteer-express-pdf-export-w3o8ip7k207y.runkit.sh/
- Runkit笔记本:https://runkit/danielo515/puppeteer-express-pdf-export
码
const puppeteer = require ('puppeteer');
const express = require('express');
var app = express(exports);
const browser = await puppeteer.launch();
const main = async () => {
const page = await browser.newPage();
await page.goto('https://example');
const pdf = await page.pdf();
return pdf;
}
app.get('/', async function (req, res) {
const pdf = await main();
res.contentType("application/pdf");
res.send(pdf);
});
app.listen(3000, function(){ console.log('Listening on 3000') });
更多推荐
生成与操纵木偶的PDF没有保存
发布评论