Spaces:
Running
Running
| 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, | |
| }; | |