Spaces:
Running
Running
File size: 1,442 Bytes
ecdd7f6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | 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,
};
|