I have built an HTML to PF converter API which works perfectly in the local environment but not in production with Azure app web services.
The request gets stuck while trying to generate the PDF and fails because of timeout.
Here is my code below:
const pdf = require('html-pdf');
var fs = require('fs');
const options = {
"height": "14cm",
"width": "20cm",
"border": "0",
"header": {
"height": "0mm",
},
"footer": {
"height": "0mm",
}
}
function generatePDF(req, res) {
const htmlContent = req.body.html;
try {
return new Promise((resolve, reject) => {
pdf.create(htmlContent, options).toFile("./public/docs/doc.pdf", (err, res) => {
if (err) {
console.log(err);
res.status(500).send("Une erreur s'est produite lors de la creation du fichier Pdf")
resolve();
} else {
resolve();
console.log("Le fichier Pdf a été généré dans le serveur");
}
});
});
} catch (err) {
res.status(500).send("Le fichier Pdf n'a pas pu etre généré pour un raison quelconque")
resolve();
}
}
function readPDF(req, res) {
try {
fs.readFile('./public/docs/doc.pdf', (err, data) => {
if (err) {
console.log(err);
res.status(500).send("Une erreur s'est produite lors de la lecture du fichier")
return;
} else {
//Convertir le contenu binaire (buffer) en Base64
const base64String = data.toString('base64');
//console.log(base64String);
res.status(200).send(base64String);
}
})
} catch (err) {
res.status(500).send("Le fichier pdf n'a pas etre lu (ficher introuvable ou inexistant)")
console.log("Le fichier pdf n'a pas etre lu (ficher introuvable ou inexistant)");
}
}
exports.generatePDFfromHTML = async function (req, res) {
await generatePDF(req, res)
readPDF(req, res);
}