compare-pdf-plus
Version:
Standalone node module that compares PDFs
106 lines (103 loc) • 2.84 kB
TypeScript
interface ConfigPaths {
actualPdfRootFolder: string;
baselinePdfRootFolder: string;
actualPngRootFolder: string;
baselinePngRootFolder: string;
diffPngRootFolder: string;
}
interface ConfigSettings {
imageEngine: "graphicsMagick" | "native";
density: number;
quality: number;
tolerance: number;
threshold: number;
cleanPngPaths?: boolean;
matchPageCount?: boolean;
disableFontFace?: boolean;
verbosity?: number;
}
interface ComparePdfConfig {
paths: ConfigPaths;
settings: ConfigSettings;
}
interface Coordinates {
x0: number;
y0: number;
x1: number;
y1: number;
}
interface PageMask {
pageIndex: number;
coordinates: Coordinates;
color?: string;
}
interface Dimension {
width: number;
height: number;
x: number;
y: number;
}
interface PageCrop {
pageIndex: number;
coordinates: Dimension;
}
interface ComparePdfOptions {
masks: PageMask[];
crops: PageCrop[];
onlyPageIndexes: number[];
skipPageIndexes: number[];
}
interface Details {
status: string;
numDiffPixels: string;
diffPng: string;
}
interface Results {
status: string;
message: string;
details?: Details[];
}
interface CompareResult {
status: "not executed" | "failed" | "passed";
message?: string;
details?: Array<{
status: string;
numDiffPixels?: number;
diffPng?: string;
actual?: string;
error?: Error;
}>;
}
type ComparisonType = "byBase64" | "byImage";
declare class ComparePdf {
private config;
private opts;
private result;
private baselinePdfBufferData?;
private actualPdfBufferData?;
private baselinePdf?;
private actualPdf?;
constructor(config?: ComparePdfConfig);
baselinePdfBuffer(baselinePdfBuffer: Buffer, baselinePdfFilename?: string): this;
baselinePdfFile(baselinePdf: string): this;
actualPdfBuffer(actualPdfBuffer: Buffer, actualPdfFilename?: string): this;
actualPdfFile(actualPdf: string): this;
addMask(pageIndex: number, coordinates?: {
x0: number;
y0: number;
x1: number;
y1: number;
}, color?: string): this;
addMasks(masks: ComparePdfOptions["masks"]): this;
onlyPageIndexes(pageIndexes: number[]): this;
skipPageIndexes(pageIndexes: number[]): this;
cropPage(pageIndex: number, coordinates?: {
width: number;
height: number;
x: number;
y: number;
}): this;
cropPages(cropPagesList: ComparePdfOptions["crops"]): this;
compare(comparisonType?: ComparisonType): Promise<CompareResult>;
}
export { ComparePdf, type ComparePdfConfig, type ComparePdfOptions, type CompareResult, type ComparisonType, type Coordinates, type Details, type Dimension, type PageCrop, type PageMask, type Results };