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