Я новичок в nodejs, экспрессе и кукловоде.Задача состоит в том, чтобы создать веб-сервер, который конвертирует HTML в PDF.После исследования я нашел для этого кукловода и фантомов (но фантомы больше не поддерживаются).Я создал простой веб-сервер, который принимает JSON с HTML и другими настройками.Но phantomjs быстрее, чем кукловод, может быть, у меня есть некоторые ошибки?
Код кукловода:
Маршрут:
router.post("/raw", jsonParser, async function(request, response) {
html2PdfConverter(request.body.html, pdf => {
response.setHeader('Content-Type', 'application/pdf');
response.send(pdf);
},
request.body.options,
request.body.puppeteerArgs,
request.body.remoteContent).catch(err => {
console.log(err);
response.status(500).send('An error occurred');
});
});
Html2PdfConverter
const puppeteer = require('puppeteer');
let convertHTMLToPDF = async (html, callback, options = null, puppeteerArgs=null, remoteContent=true) => {
if (typeof html !== 'string') {
throw new Error(
'Invalid Argument: HTML expected as type of string and received a value of a different type. Check your request body and request headers.'
);
}
let browser;
if (puppeteerArgs) {
browser = await puppeteer.launch(puppeteerArgs);
} else {
browser = await puppeteer.launch();
}
const page = await browser.newPage();
if (!options) {
options = { format: 'Letter' };
}
if (remoteContent === true) {
await page.goto(`data:text/html,${html}`, {
waitUntil: 'networkidle0'
});
} else {
await page.setContent(html);
}
await page.pdf(options).then(callback, function(error) {
console.log(error);
});
await browser.close();
};
module.exports = convertHTMLToPDF;
Я думаю, чтоphantomjs работает быстрее, потому что метод pdf возвращает поток, а html и pdf файлы создаются в папке Temp.
Буду признателен за любую помощь.