UNPKG

chromiumly

Version:

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

86 lines 3.54 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.PdfEngineWatermarkStampUtils = void 0; const fs_1 = require("fs"); const path_1 = __importDefault(require("path")); const consumers_1 = require("node:stream/consumers"); /** * Appends PDF-engine watermark and stamp multipart fields for Gotenberg post-processing. */ class PdfEngineWatermarkStampUtils { static async appendFileForField(data, fieldName, file, defaultFilename) { const filename = typeof file === 'string' ? path_1.default.basename(file.toString()) : defaultFilename; if (Buffer.isBuffer(file)) { data.append(fieldName, new Blob([file]), filename); } else if (file instanceof fs_1.ReadStream) { const content = await (0, consumers_1.blob)(file); data.append(fieldName, content, filename); } else { await fs_1.promises.access(file, fs_1.constants.R_OK); const _filename = path_1.default.basename(file.toString()); const content = await (0, fs_1.openAsBlob)(file); data.append(fieldName, content, _filename); } } /** * Appends watermarkSource, watermarkExpression, watermarkPages, watermarkOptions, and optional watermark file. */ static async appendWatermark(data, watermark) { if (watermark.source !== undefined) { data.append('watermarkSource', watermark.source); } if (watermark.expression !== undefined) { data.append('watermarkExpression', watermark.expression); } if (watermark.pages !== undefined) { data.append('watermarkPages', watermark.pages); } if (watermark.options !== undefined) { data.append('watermarkOptions', JSON.stringify(watermark.options)); } if (watermark.file !== undefined) { await PdfEngineWatermarkStampUtils.appendFileForField(data, 'watermark', watermark.file, 'watermark'); } } /** * Appends stampSource, stampExpression, stampPages, stampOptions, and optional stamp file. */ static async appendStamp(data, stamp) { if (stamp.source !== undefined) { data.append('stampSource', stamp.source); } if (stamp.expression !== undefined) { data.append('stampExpression', stamp.expression); } if (stamp.pages !== undefined) { data.append('stampPages', stamp.pages); } if (stamp.options !== undefined) { data.append('stampOptions', JSON.stringify(stamp.options)); } if (stamp.file !== undefined) { await PdfEngineWatermarkStampUtils.appendFileForField(data, 'stamp', stamp.file, 'stamp'); } } /** * @param data - Target FormData * @param options - Optional PDF-engine watermark and/or stamp configuration */ static async appendPdfEngineWatermarkStamp(data, options) { if (options.watermark) { await PdfEngineWatermarkStampUtils.appendWatermark(data, options.watermark); } if (options.stamp) { await PdfEngineWatermarkStampUtils.appendStamp(data, options.stamp); } } } exports.PdfEngineWatermarkStampUtils = PdfEngineWatermarkStampUtils; //# sourceMappingURL=pdf-engine-watermark-stamp.utils.js.map