File size: 1,576 Bytes
f6f0c71 c9bbadf f6f0c71 |
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 |
import PDFDocument from 'pdfkit'
import fs from 'fs'
// eslint-disable-next-line
import { Image } from '../../object/Image.js'
class PdfGenerator {
constructor() {
if (!PdfGenerator.instance) {
PdfGenerator.instance = this
}
return PdfGenerator.instance
}
/**
* Generate a pdf file from `Image`s
* @param {Image[]} images
* @param {string} dest
* @returns
*/
generate(images, dest) {
return new Promise((resolve, reject) => {
if (images.length > 0) {
const doc = new PDFDocument({ size: [images[0].width, images[0].height] });
const writeStream = fs.createWriteStream(dest);
doc.pipe(writeStream);
for (let page = 1; page <= images.length; page++) {
let image = images[page - 1]
doc.image(image.path, 0, 0, {
fit: [image.width, image.height],
align: 'center',
valign: 'center'
});
if (page < images.length) {
doc.addPage({ size: [images[page].width, images[page].height] })
}
}
doc.end();
writeStream.on('finish', () => {
console.log(`Generated: ${dest}`)
resolve()
});
} else {
reject("no images")
}
});
}
}
export const pdfGenerator = new PdfGenerator()
|