chromiumly
Version:
A lightweight Typescript library that interacts with Gotenberg's different modules to convert a variety of document formats to PDF files.
87 lines (86 loc) • 4 kB
TypeScript
import { ReadStream } from 'fs';
import { Metadata, PdfFormat, type PdfEngineStamp, type PdfEngineWatermark } from '../../common';
import { DownloadFrom, PdfEngineRotate, Split, WebhookOptions } from '../../common/types';
type FileExtension = '123' | '602' | 'abw' | 'bib' | 'bmp' | 'cdr' | 'cgm' | 'cmx' | 'csv' | 'cwk' | 'dbf' | 'dif' | 'doc' | 'docm' | 'docx' | 'dot' | 'dotm' | 'dotx' | 'dxf' | 'emf' | 'eps' | 'epub' | 'fodg' | 'fodp' | 'fods' | 'fodt' | 'fopd' | 'gif' | 'htm' | 'html' | 'hwp' | 'jpeg' | 'jpg' | 'key' | 'ltx' | 'lwp' | 'mcw' | 'met' | 'mml' | 'mw' | 'numbers' | 'odd' | 'odg' | 'odm' | 'odp' | 'ods' | 'odt' | 'otg' | 'oth' | 'otp' | 'ots' | 'ott' | 'pages' | 'pbm' | 'pcd' | 'pct' | 'pcx' | 'pdb' | 'pdf' | 'pgm' | 'png' | 'pot' | 'potm' | 'potx' | 'ppm' | 'pps' | 'ppt' | 'pptm' | 'pptx' | 'psd' | 'psw' | 'pub' | 'pwp' | 'pxl' | 'ras' | 'rtf' | 'sda' | 'sdc' | 'sdd' | 'sdp' | 'sdw' | 'sgl' | 'slk' | 'smf' | 'stc' | 'std' | 'sti' | 'stw' | 'svg' | 'svm' | 'swf' | 'sxc' | 'sxd' | 'sxg' | 'sxi' | 'sxm' | 'sxw' | 'tga' | 'tif' | 'tiff' | 'txt' | 'uof' | 'uop' | 'uos' | 'uot' | 'vdx' | 'vor' | 'vsd' | 'vsdm' | 'vsdx' | 'wb2' | 'wk1' | 'wks' | 'wmf' | 'wpd' | 'wpg' | 'wps' | 'xbm' | 'xhtml' | 'xls' | 'xlsb' | 'xlsm' | 'xlsx' | 'xlt' | 'xltm' | 'xltx' | 'xlw' | 'xml' | 'xpm' | 'zabw';
type FileInfo = {
data: Buffer | ReadStream;
ext: FileExtension;
};
export type PathLikeOrReadStream = string | FileInfo;
export type PageProperties = {
password?: string;
landscape?: boolean;
nativePageRanges?: {
from: number;
to: number;
};
exportFormFields?: boolean;
singlePageSheets?: boolean;
allowDuplicateFieldNames?: boolean;
exportBookmarks?: boolean;
exportBookmarksToPdfDestination?: boolean;
exportPlaceholders?: boolean;
exportNotes?: boolean;
exportNotesPages?: boolean;
exportOnlyNotesPages?: boolean;
exportNotesInMargin?: boolean;
convertOooTargetToPdfTarget?: boolean;
exportLinksRelativeFsys?: boolean;
exportHiddenSlides?: boolean;
skipEmptyPages?: boolean;
addOriginalDocumentAsStream?: boolean;
};
export type ConversionOptions = {
properties?: PageProperties;
merge?: boolean;
pdfa?: PdfFormat;
pdfUA?: boolean;
metadata?: Metadata;
losslessImageCompression?: boolean;
reduceImageResolution?: boolean;
quality?: number;
maxImageResolution?: 75 | 150 | 300 | 600 | 1200;
initialView?: number;
initialPage?: number;
magnification?: number;
zoom?: number;
pageLayout?: number;
firstPageOnLeft?: boolean;
resizeWindowToInitialPage?: boolean;
centerWindow?: boolean;
openInFullScreenMode?: boolean;
displayPDFDocumentTitle?: boolean;
hideViewerMenubar?: boolean;
hideViewerToolbar?: boolean;
hideViewerWindowControls?: boolean;
useTransitionEffects?: boolean;
openBookmarkLevels?: number;
downloadFrom?: DownloadFrom;
webhook?: WebhookOptions;
split?: Split;
flatten?: boolean;
userPassword?: string;
ownerPassword?: string;
embeds?: PathLikeOrReadStream[];
/** LibreOffice single-line text watermark during export */
nativeWatermarkText?: string;
/** Decimal RGB (e.g. 16711680 for red) */
nativeWatermarkColor?: number;
/** Font height in points; 0 = auto */
nativeWatermarkFontHeight?: number;
/** Rotation in tenths of a degree (e.g. 450 = 45°) */
nativeWatermarkRotateAngle?: number;
nativeWatermarkFontName?: string;
nativeTiledWatermarkText?: string;
/** PDF-engine post-processing watermark; `file` may be a LibreOffice PathLikeOrReadStream */
watermark?: Omit<PdfEngineWatermark, 'file'> & {
file?: PathLikeOrReadStream | Buffer;
};
/** PDF-engine post-processing stamp */
stamp?: Omit<PdfEngineStamp, 'file'> & {
file?: PathLikeOrReadStream | Buffer;
};
/** PDF-engine post-process page rotation */
rotate?: PdfEngineRotate;
};
export {};