quickchart / lib /pdf.js
glutamatt's picture
glutamatt HF Staff
Initial deployment of QuickChart service
ecdd7f6 verified
const PDFDocument = require('pdfkit');
// Minimum margin between image and any edge of PDF.
const IMAGE_MARGIN = 35;
function getPdfBufferFromPng(image, pdfKitImageOptions) {
const ret = new Promise((resolve, reject) => {
try {
const doc = new PDFDocument();
const buffers = [];
doc.on('data', buffers.push.bind(buffers));
doc.on('end', () => {
const pdfData = Buffer.concat(buffers);
resolve(pdfData);
});
doc.image(
image,
IMAGE_MARGIN,
100,
Object.assign(
{
fit: [doc.page.width - IMAGE_MARGIN * 2, doc.page.height - IMAGE_MARGIN * 2],
align: 'center',
},
pdfKitImageOptions || {},
),
);
doc.end();
} catch (err) {
reject(`PDF generation error: ${err.message}`);
}
});
return ret;
}
function getPdfBufferWithText(text) {
const ret = new Promise((resolve, reject) => {
try {
const doc = new PDFDocument();
const buffers = [];
doc.on('data', buffers.push.bind(buffers));
doc.on('end', () => {
const pdfData = Buffer.concat(buffers);
resolve(pdfData);
});
doc.fontSize(24);
doc.text(text, 100, 100);
doc.end();
} catch (err) {
reject(`PDF generation error: ${err.message}`);
}
});
return ret;
}
module.exports = {
getPdfBufferFromPng,
getPdfBufferWithText,
};