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
JavaScript
;
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