UNPKG

chromiumly

Version:

A lightweight Typescript library that interacts with Gotenberg's different modules to convert a variety of document formats to PDF files.

76 lines 3.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PDFEnginesUtils = void 0; const tslib_1 = require("tslib"); const fs_1 = require("fs"); const path_1 = tslib_1.__importDefault(require("path")); const consumers_1 = require("node:stream/consumers"); const common_1 = require("../../common"); /** * Utility class for handling common tasks related to PDF engine operations. */ class PDFEnginesUtils { /** * Adds PDF files to the FormData object. * * @param {PathLikeOrReadStream[]} files - An array of PDF files to be added to the FormData. * @param {FormData} data - The FormData object to which PDF files will be added. * @throws {Error} Throws an error if the file extension is not supported. */ static addFiles(files, data) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const paddingLength = String(files.length).length + 1; yield Promise.all(files.map((file, index) => tslib_1.__awaiter(this, void 0, void 0, function* () { const filename = `file${String(index + 1).padStart(paddingLength, '0')}.pdf`; if (Buffer.isBuffer(file)) { data.append('files', new Blob([file]), filename); } else if (file instanceof fs_1.ReadStream) { const content = yield (0, consumers_1.blob)(file); data.append('files', content, filename); } else { yield fs_1.promises.access(file, fs_1.constants.R_OK); const _filename = path_1.default.basename(file.toString()); const extension = path_1.default.extname(_filename); if (extension === '.pdf') { const content = yield (0, fs_1.openAsBlob)(file); data.append('files', content, _filename); } else { throw new Error(`${extension} is not supported`); } } }))); }); } /** * Customizes the FormData object based on the provided conversion options. * * @param {FormData} data - The FormData object to be customized. * @param {ConversionOptions | MergeOptions} options - The options to apply to the FormData. * @returns {Promise<void>} A Promise that resolves once the customization is complete. */ static customize(data, options) { return tslib_1.__awaiter(this, void 0, void 0, function* () { common_1.GotenbergUtils.assert(!!options.pdfa || !!options.pdfUA, 'At least one of pdfa or pdfUA must be provided'); if (options.pdfa) { data.append('pdfa', options.pdfa); } if (options.pdfUA) { data.append('pdfUA', String(options.pdfUA)); } if ('metadata' in options && options.metadata) { data.append('metadata', JSON.stringify(options.metadata)); } if (options.downloadFrom) { data.append('downloadFrom', JSON.stringify(options.downloadFrom)); } if ('flatten' in options && options.flatten) { data.append('flatten', String(options.flatten)); } }); } } exports.PDFEnginesUtils = PDFEnginesUtils; //# sourceMappingURL=pdf-engines.utils.js.map