New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

pdf-visual-diff

Package Overview
Dependencies
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pdf-visual-diff - npm Package Compare versions

Comparing version
0.12.0
to
0.13.0
+12
.editorconfig
root = true
[*]
indent_style = space
indent_size = 2
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
end_of_line = lf
[CHANGELOG.md]
indent_size = false
+15
-0
# Changelog
## UNRELEASED
### 🐛 Bug Fix
- [PR#76](https://github.com/moshensky/pdf-visual-diff/pull/76) fix: remove new snapshot when existing snapshot matches
## 0.12.0 / 2024-09-26
### :tada: Enhancements
- [PR#70](https://github.com/moshensky/pdf-visual-diff/pull/70): feat: add failOnMissingSnapshot to `comparePdfToSnapshot` options. If no snapshot exists:
- If `failOnMissingSnapshot` is `false` (default), the PDF is converted to an image,
saved as a new snapshot, and the function returns `true`.
- If `failOnMissingSnapshot` is `true`, the function returns `false` without creating a new snapshot.
## 0.11.1 / 2024-09-11

@@ -4,0 +19,0 @@

+5
-1

@@ -64,3 +64,2 @@ import { PdfToPngOptions } from './types';

};
export declare const snapshotsDirName = "__snapshots__";
/**

@@ -94,1 +93,6 @@ * Compares a PDF to a persisted snapshot, with behavior for handling missing snapshots

export declare function comparePdfToSnapshot(pdf: string | Buffer, snapshotDir: string, snapshotName: string, options?: CompareOptions): Promise<boolean>;
export declare const SNAPSHOTS_DIR_NAME = "__snapshots__";
/**
* @deprecated Use SNAPSHOTS_DIR_NAME instead.
*/
export declare const snapshotsDirName = "__snapshots__";
+74
-48
"use strict";
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.snapshotsDirName = void 0;
exports.snapshotsDirName = exports.SNAPSHOTS_DIR_NAME = void 0;
exports.comparePdfToSnapshot = comparePdfToSnapshot;
const path = require("path");
const fs_1 = require("fs");
const path = require("node:path");
const promises_1 = require("node:fs/promises");
const pdf2png_1 = require("./pdf2png/pdf2png");
const compare_images_1 = require("./compare-images");
const jimp_1 = require("jimp");
const types_1 = require("./types");
const imageUtils_1 = require("./imageUtils");

@@ -44,3 +34,2 @@ const colorToNum = {

};
exports.snapshotsDirName = '__snapshots__';
/**

@@ -73,38 +62,75 @@ * Compares a PDF to a persisted snapshot, with behavior for handling missing snapshots

*/
function comparePdfToSnapshot(pdf, snapshotDir, snapshotName, options) {
const _a = options || {}, { maskRegions = () => [], pdf2PngOptions, failOnMissingSnapshot = false } = _a, restOpts = __rest(_a, ["maskRegions", "pdf2PngOptions", "failOnMissingSnapshot"]);
const dir = path.join(snapshotDir, exports.snapshotsDirName);
if (!(0, fs_1.existsSync)(dir)) {
(0, fs_1.mkdirSync)(dir, { recursive: true });
async function comparePdfToSnapshot(pdf, snapshotDir, snapshotName, options) {
const mergedOptions = mergeOptionsWithDefaults(options);
const snapshotContext = await createSnapshotContext(snapshotDir, snapshotName);
try {
// Check if snapshot exits and handle accordingly
await (0, promises_1.access)(snapshotContext.path);
return compareWithSnapshot(pdf, snapshotContext, mergedOptions);
}
const snapshotPath = path.join(dir, snapshotName + '.png');
// If the snapshot doesn't exist
if (!(0, fs_1.existsSync)(snapshotPath)) {
// If we shouldn't generate a snapshot fail.
if (failOnMissingSnapshot) {
return Promise.resolve(false);
}
// Proceed with snapshot generation
return (0, pdf2png_1.pdf2png)(pdf, pdf2PngOptions)
.then(maskImgWithRegions(maskRegions))
.then((0, imageUtils_1.writeImages)(snapshotPath))
.then(() => true);
catch (_a) {
return handleMissingSnapshot(pdf, snapshotContext, mergedOptions);
}
// If the snapshot exists, perform comparison
return (0, pdf2png_1.pdf2png)(pdf, pdf2PngOptions)
.then(maskImgWithRegions(maskRegions))
.then((images) => (0, compare_images_1.compareImages)(snapshotPath, images, restOpts).then((result) => {
const diffSnapshotPath = path.join(dir, snapshotName + '.diff.png');
if (result.equal) {
if ((0, fs_1.existsSync)(diffSnapshotPath)) {
(0, fs_1.unlinkSync)(diffSnapshotPath);
}
return true;
}
const newSnapshotPath = path.join(dir, snapshotName + '.new.png');
return (0, imageUtils_1.writeImages)(newSnapshotPath)(images)
.then(() => (0, imageUtils_1.writeImages)(diffSnapshotPath)(result.diffs.map((x) => x.diff)))
.then(() => false);
}));
}
function mergeOptionsWithDefaults(options) {
var _a, _b, _c, _d;
return {
maskRegions: (_a = options === null || options === void 0 ? void 0 : options.maskRegions) !== null && _a !== void 0 ? _a : (() => []),
pdf2PngOptions: (_b = options === null || options === void 0 ? void 0 : options.pdf2PngOptions) !== null && _b !== void 0 ? _b : { dpi: types_1.Dpi.High },
failOnMissingSnapshot: (_c = options === null || options === void 0 ? void 0 : options.failOnMissingSnapshot) !== null && _c !== void 0 ? _c : false,
tolerance: (_d = options === null || options === void 0 ? void 0 : options.tolerance) !== null && _d !== void 0 ? _d : 0,
};
}
exports.SNAPSHOTS_DIR_NAME = '__snapshots__';
/**
* @deprecated Use SNAPSHOTS_DIR_NAME instead.
*/
exports.snapshotsDirName = exports.SNAPSHOTS_DIR_NAME;
/** Generates the snapshot context and creates the folder if it doesn’t already exist. */
async function createSnapshotContext(snapshotDir, snapshotName) {
const dirPath = path.join(snapshotDir, exports.SNAPSHOTS_DIR_NAME);
try {
await (0, promises_1.access)(dirPath);
}
catch (_a) {
await (0, promises_1.mkdir)(dirPath, { recursive: true });
}
const basePath = path.join(dirPath, snapshotName);
return {
name: snapshotName,
dirPath,
path: `${basePath}.png`,
diffPath: `${basePath}.diff.png`,
newPath: `${basePath}.new.png`,
};
}
async function handleMissingSnapshot(pdf, snapshotContext, { failOnMissingSnapshot, maskRegions, pdf2PngOptions }) {
if (failOnMissingSnapshot) {
return false;
}
// Generate snapshot if missing
const images = await (0, pdf2png_1.pdf2png)(pdf, pdf2PngOptions).then(maskImgWithRegions(maskRegions));
await (0, imageUtils_1.writeImages)(snapshotContext.path)(images);
return true;
}
async function compareWithSnapshot(pdf, snapshotContext, { maskRegions, pdf2PngOptions, tolerance }) {
const images = await (0, pdf2png_1.pdf2png)(pdf, pdf2PngOptions).then(maskImgWithRegions(maskRegions));
const result = await (0, compare_images_1.compareImages)(snapshotContext.path, images, { tolerance });
if (result.equal) {
await removeIfExists(snapshotContext.diffPath);
await removeIfExists(snapshotContext.newPath);
return true;
}
await (0, imageUtils_1.writeImages)(snapshotContext.newPath)(images);
await (0, imageUtils_1.writeImages)(snapshotContext.diffPath)(result.diffs.map((x) => x.diff));
return false;
}
async function removeIfExists(filePath) {
try {
await (0, promises_1.unlink)(filePath);
}
catch (_a) {
// File doesn't exist, no need to remove
}
}
//# sourceMappingURL=compare-pdf-to-snapshot.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"compare-pdf-to-snapshot.js","sourceRoot":"","sources":["../src/compare-pdf-to-snapshot.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"compare-pdf-to-snapshot.js","sourceRoot":"","sources":["../src/compare-pdf-to-snapshot.ts"],"names":[],"mappings":";;;AAyIA,oDAgBC;AAzJD,kCAAiC;AACjC,+CAAwD;AACxD,+CAA2C;AAC3C,qDAAgD;AAChD,+BAAyC;AACzC,mCAA8C;AAC9C,6CAA0C;AAmD1C,MAAM,UAAU,GAAmC;IACjD,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,UAAU;CACjB,CAAA;AAED,MAAM,kBAAkB,GACtB,CAAC,WAAwB,EAAE,EAAE,CAC7B,CAAC,MAAmC,EAA+B,EAAE;IACnE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1B,CAAC;QAAA,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;YAC7E,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBAC9B,GAAG,CAAC,SAAS,CAAC,IAAI,WAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YAC5E,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AA6BH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACI,KAAK,UAAU,oBAAoB,CACxC,GAAoB,EACpB,WAAmB,EACnB,YAAoB,EACpB,OAAwB;IAExB,MAAM,aAAa,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAA;IACvD,MAAM,eAAe,GAAG,MAAM,qBAAqB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IAE9E,IAAI,CAAC;QACH,iDAAiD;QACjD,MAAM,IAAA,iBAAM,EAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QAClC,OAAO,mBAAmB,CAAC,GAAG,EAAE,eAAe,EAAE,aAAa,CAAC,CAAA;IACjE,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,aAAa,CAAC,CAAA;IACnE,CAAC;AACH,CAAC;AAUD,SAAS,wBAAwB,CAAC,OAAwB;;IACxD,OAAO;QACL,WAAW,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,mCAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QAC/C,cAAc,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,mCAAI,EAAE,GAAG,EAAE,WAAG,CAAC,IAAI,EAAE;QAC5D,qBAAqB,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,qBAAqB,mCAAI,KAAK;QAC9D,SAAS,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,mCAAI,CAAC;KACnC,CAAA;AACH,CAAC;AAEY,QAAA,kBAAkB,GAAG,eAAe,CAAA;AACjD;;GAEG;AACU,QAAA,gBAAgB,GAAG,0BAAkB,CAAA;AAElD,yFAAyF;AACzF,KAAK,UAAU,qBAAqB,CAClC,WAAmB,EACnB,YAAoB;IAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,0BAAkB,CAAC,CAAA;IAC1D,IAAI,CAAC;QACH,MAAM,IAAA,iBAAM,EAAC,OAAO,CAAC,CAAA;IACvB,CAAC;IAAC,WAAM,CAAC;QACP,MAAM,IAAA,gBAAK,EAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IAEjD,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,OAAO;QACP,IAAI,EAAE,GAAG,QAAQ,MAAM;QACvB,QAAQ,EAAE,GAAG,QAAQ,WAAW;QAChC,OAAO,EAAE,GAAG,QAAQ,UAAU;KAC/B,CAAA;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,GAAoB,EACpB,eAAgC,EAChC,EAAE,qBAAqB,EAAE,WAAW,EAAE,cAAc,EAA4B;IAEhF,IAAI,qBAAqB,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,+BAA+B;IAC/B,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAO,EAAC,GAAG,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAA;IACvF,MAAM,IAAA,wBAAW,EAAC,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAA;IAE/C,OAAO,IAAI,CAAA;AACb,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,GAAoB,EACpB,eAAgC,EAChC,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAA4B;IAEpE,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAO,EAAC,GAAG,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAA;IACvF,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAa,EAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;IAE/E,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAC9C,MAAM,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;QAE7C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,IAAA,wBAAW,EAAC,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;IAClD,MAAM,IAAA,wBAAW,EAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAE5E,OAAO,KAAK,CAAA;AACd,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,QAAgB;IAC5C,IAAI,CAAC;QACH,MAAM,IAAA,iBAAM,EAAC,QAAQ,CAAC,CAAA;IACxB,CAAC;IAAC,WAAM,CAAC;QACP,wCAAwC;IAC1C,CAAC;AACH,CAAC"}

@@ -5,43 +5,71 @@ "use strict";

const assert = require("node:assert/strict");
const node_path_1 = require("node:path");
const promises_1 = require("node:fs/promises");
const jimp_1 = require("jimp");
const compare_pdf_to_snapshot_1 = require("./compare-pdf-to-snapshot");
const path_1 = require("path");
const fs_1 = require("fs");
const compare_images_1 = require("./compare-images");
const fs = require("fs/promises");
const types_1 = require("./types");
const testDataDir = (0, path_1.join)(__dirname, './test-data');
const pdfs = (0, path_1.join)(testDataDir, 'pdfs');
const singlePageSmallPdfPath = (0, path_1.join)(pdfs, 'single-page-small.pdf');
const singlePagePdfPath = (0, path_1.join)(pdfs, 'single-page.pdf');
const twoPagePdfPath = (0, path_1.join)(pdfs, 'two-page.pdf');
const testDataDir = (0, node_path_1.join)(__dirname, './test-data');
const pdfs = (0, node_path_1.join)(testDataDir, 'pdfs');
const singlePageSmallPdfPath = (0, node_path_1.join)(pdfs, 'single-page-small.pdf');
const singlePagePdfPath = (0, node_path_1.join)(pdfs, 'single-page.pdf');
const twoPagePdfPath = (0, node_path_1.join)(pdfs, 'two-page.pdf');
async function removeIfExists(filePath) {
try {
await (0, promises_1.unlink)(filePath);
}
catch (_a) {
// File doesn't exist, no need to remove
}
}
async function fileExists(filePath) {
try {
await (0, promises_1.access)(filePath);
return true;
}
catch (_a) {
return false;
}
}
(0, node_test_1.describe)('comparePdfToSnapshot()', () => {
(0, node_test_1.it)('should create new snapshot, when one does not exists', () => {
(0, node_test_1.it)('should create new snapshot, when one does not exists', async () => {
const snapshotName = 'single-page-small';
const snapshotPath = (0, path_1.join)(__dirname, compare_pdf_to_snapshot_1.snapshotsDirName, snapshotName + '.png');
if ((0, fs_1.existsSync)(snapshotPath)) {
(0, fs_1.unlinkSync)(snapshotPath);
}
return (0, compare_pdf_to_snapshot_1.comparePdfToSnapshot)(singlePageSmallPdfPath, __dirname, snapshotName).then((x) => {
assert.strictEqual(x, true);
assert.strictEqual((0, fs_1.existsSync)(snapshotPath), true);
(0, fs_1.unlinkSync)(snapshotPath);
});
const snapshotPath = (0, node_path_1.join)(__dirname, compare_pdf_to_snapshot_1.SNAPSHOTS_DIR_NAME, `${snapshotName}.png`);
await removeIfExists(snapshotPath);
const isEqual = await (0, compare_pdf_to_snapshot_1.comparePdfToSnapshot)(singlePageSmallPdfPath, __dirname, snapshotName);
assert.strictEqual(isEqual, true);
assert.strictEqual(await fileExists(snapshotPath), true);
await removeIfExists(snapshotPath);
});
(0, node_test_1.it)('should fail and create diff with new version', () => (0, compare_pdf_to_snapshot_1.comparePdfToSnapshot)(singlePagePdfPath, __dirname, 'two-page').then((x) => {
assert.strictEqual(x, false);
const snapshotDiffPath = (0, path_1.join)(__dirname, compare_pdf_to_snapshot_1.snapshotsDirName, 'two-page.diff.png');
assert.strictEqual((0, fs_1.existsSync)(snapshotDiffPath), true, 'diff is not created');
const snapshotNewPath = (0, path_1.join)(__dirname, compare_pdf_to_snapshot_1.snapshotsDirName, 'two-page.new.png');
assert.strictEqual((0, fs_1.existsSync)(snapshotNewPath), true, 'new is not created');
}));
(0, node_test_1.it)('should fail and create diff with new version', async () => {
const isEqual = await (0, compare_pdf_to_snapshot_1.comparePdfToSnapshot)(singlePagePdfPath, __dirname, 'two-page');
assert.strictEqual(isEqual, false);
const snapshotDiffPath = (0, node_path_1.join)(__dirname, compare_pdf_to_snapshot_1.SNAPSHOTS_DIR_NAME, 'two-page.diff.png');
assert.strictEqual(await fileExists(snapshotDiffPath), true, 'diff is not created');
const snapshotNewPath = (0, node_path_1.join)(__dirname, compare_pdf_to_snapshot_1.SNAPSHOTS_DIR_NAME, 'two-page.new.png');
assert.strictEqual(await fileExists(snapshotNewPath), true, 'new is not created');
});
(0, node_test_1.it)('should remove diff and new snapshots when matches with reference snapshot', async () => {
const snapshotName = 'should-remove-diff-and-new';
const snapshotBase = (0, node_path_1.join)(__dirname, compare_pdf_to_snapshot_1.SNAPSHOTS_DIR_NAME, snapshotName);
const snapshotPathDiff = `${snapshotBase}.diff.png`;
const snapshotPathNew = `${snapshotBase}.new.png`;
await removeIfExists(snapshotPathDiff);
await removeIfExists(snapshotPathNew);
await new jimp_1.Jimp({ width: 100, height: 100 }).write(snapshotPathDiff);
await new jimp_1.Jimp({ width: 100, height: 100 }).write(snapshotPathNew);
const isEqual = await (0, compare_pdf_to_snapshot_1.comparePdfToSnapshot)(singlePageSmallPdfPath, __dirname, snapshotName);
assert.strictEqual(isEqual, true);
assert.strictEqual(await fileExists(snapshotPathDiff), false, 'Snapshot diff should not exists.');
assert.strictEqual(await fileExists(snapshotPathNew), false, 'Snapshot new should not exists.');
});
(0, node_test_1.describe)('should pass', () => {
(0, node_test_1.it)('should pass', () => (0, compare_pdf_to_snapshot_1.comparePdfToSnapshot)(twoPagePdfPath, __dirname, 'two-page-success').then((x) => assert.strictEqual(x, true)));
const testDataDir = (0, path_1.join)(__dirname, './test-data');
const pdfs = (0, path_1.join)(testDataDir, 'pdfs');
const singlePageSmall = (0, path_1.join)(pdfs, 'single-page-small.pdf');
const singlePage = (0, path_1.join)(pdfs, 'single-page.pdf');
const tamReview = (0, path_1.join)(pdfs, 'TAMReview.pdf');
const twoPage = (0, path_1.join)(pdfs, 'two-page.pdf');
const expectedDir = (0, path_1.join)(testDataDir, 'pdf2png-expected');
const testDataDir = (0, node_path_1.join)(__dirname, './test-data');
const pdfs = (0, node_path_1.join)(testDataDir, 'pdfs');
const singlePageSmall = (0, node_path_1.join)(pdfs, 'single-page-small.pdf');
const singlePage = (0, node_path_1.join)(pdfs, 'single-page.pdf');
const tamReview = (0, node_path_1.join)(pdfs, 'TAMReview.pdf');
const twoPage = (0, node_path_1.join)(pdfs, 'two-page.pdf');
const expectedDir = (0, node_path_1.join)(testDataDir, 'pdf2png-expected');
const testPdf2png = (pdf, expectedImageName, options) => {

@@ -59,3 +87,3 @@ return (0, compare_pdf_to_snapshot_1.comparePdfToSnapshot)(pdf, expectedDir, expectedImageName, options).then((x) => {

(0, node_test_1.it)('two-page.pdf', () => testPdf2png(twoPage, 'two-page'));
(0, node_test_1.it)('two-page.pdf buffer', () => fs.readFile(twoPage).then((x) => testPdf2png(x, 'two-page')));
(0, node_test_1.it)('two-page.pdf buffer', () => (0, promises_1.readFile)(twoPage).then((x) => testPdf2png(x, 'two-page')));
});

@@ -124,56 +152,45 @@ (0, node_test_1.describe)('maskRegions', () => {

}).then((x) => assert.strictEqual(x, true)));
(0, node_test_1.it)('should create initial masked image', () => {
(0, node_test_1.it)('should create initial masked image', async () => {
const snapshotName = 'initial-rectangle-masks';
const snapshotPath = (0, path_1.join)(__dirname, compare_pdf_to_snapshot_1.snapshotsDirName, snapshotName + '.png');
const expectedImagePath = (0, path_1.join)(__dirname, './test-data', 'expected-initial-rectangle-masks.png');
if ((0, fs_1.existsSync)(snapshotPath)) {
(0, fs_1.unlinkSync)(snapshotPath);
}
return (0, compare_pdf_to_snapshot_1.comparePdfToSnapshot)(singlePagePdfPath, __dirname, snapshotName, opts)
.then((x) => assert.strictEqual(x, true))
.then(() => jimp_1.Jimp.read(snapshotPath))
.then((x) => x)
.then((img) => (0, compare_images_1.compareImages)(expectedImagePath, [img], { tolerance: 0 }).then((x) => assert.strictEqual(x.equal, true, 'generated initial rectangle masks does not match expected one')))
.then(() => (0, fs_1.unlinkSync)(snapshotPath));
const snapshotPath = (0, node_path_1.join)(__dirname, compare_pdf_to_snapshot_1.SNAPSHOTS_DIR_NAME, snapshotName + '.png');
const expectedImagePath = (0, node_path_1.join)(__dirname, './test-data', 'expected-initial-rectangle-masks.png');
await removeIfExists(snapshotPath);
const isEqual = await (0, compare_pdf_to_snapshot_1.comparePdfToSnapshot)(singlePagePdfPath, __dirname, snapshotName, opts);
assert.strictEqual(isEqual, true);
const img = (await jimp_1.Jimp.read(snapshotPath));
const { equal } = await (0, compare_images_1.compareImages)(expectedImagePath, [img], { tolerance: 0 });
assert.strictEqual(equal, true, 'Rectangle masks does not match expected one');
await removeIfExists(snapshotPath);
});
});
(0, node_test_1.describe)('when reference snapshot does not exist', () => {
(0, node_test_1.it)('should be created when `failOnMissingSnapshot` is not set', () => {
(0, node_test_1.it)('should be created when `failOnMissingSnapshot` is not set', async () => {
const snapshotName = 'allow-create-snapshot-when-failOnMissingSnapshot-is-not-set';
const snapshotPath = (0, path_1.join)(__dirname, compare_pdf_to_snapshot_1.snapshotsDirName, snapshotName + '.png');
if ((0, fs_1.existsSync)(snapshotPath)) {
(0, fs_1.unlinkSync)(snapshotPath);
}
return (0, compare_pdf_to_snapshot_1.comparePdfToSnapshot)(singlePageSmallPdfPath, __dirname, snapshotName).then((x) => {
assert.strictEqual(x, true);
assert.strictEqual((0, fs_1.existsSync)(snapshotPath), true, 'Snapshot should be created');
(0, fs_1.unlinkSync)(snapshotPath);
});
const snapshotPath = (0, node_path_1.join)(__dirname, compare_pdf_to_snapshot_1.SNAPSHOTS_DIR_NAME, snapshotName + '.png');
await removeIfExists(snapshotPath);
const isEqual = await (0, compare_pdf_to_snapshot_1.comparePdfToSnapshot)(singlePageSmallPdfPath, __dirname, snapshotName);
assert.strictEqual(isEqual, true);
assert.strictEqual(await fileExists(snapshotPath), true, 'Snapshot should be created');
removeIfExists(snapshotPath);
});
(0, node_test_1.it)('should be created when `failOnMissingSnapshot` is set to `false`', () => {
(0, node_test_1.it)('should be created when `failOnMissingSnapshot` is set to `false`', async () => {
const snapshotName = 'allow-create-snapshot-when-failOnMissingSnapshot-is-set-to-false';
const snapshotPath = (0, path_1.join)(__dirname, compare_pdf_to_snapshot_1.snapshotsDirName, snapshotName + '.png');
if ((0, fs_1.existsSync)(snapshotPath)) {
(0, fs_1.unlinkSync)(snapshotPath);
}
return (0, compare_pdf_to_snapshot_1.comparePdfToSnapshot)(singlePageSmallPdfPath, __dirname, snapshotName, {
const snapshotPath = (0, node_path_1.join)(__dirname, compare_pdf_to_snapshot_1.SNAPSHOTS_DIR_NAME, snapshotName + '.png');
await removeIfExists(snapshotPath);
const isEqual = await (0, compare_pdf_to_snapshot_1.comparePdfToSnapshot)(singlePageSmallPdfPath, __dirname, snapshotName, {
failOnMissingSnapshot: false,
}).then((x) => {
assert.strictEqual(x, true);
assert.strictEqual((0, fs_1.existsSync)(snapshotPath), true, 'Snapshot should be created');
(0, fs_1.unlinkSync)(snapshotPath);
});
assert.strictEqual(isEqual, true);
assert.strictEqual(await fileExists(snapshotPath), true, 'Snapshot should be created');
await removeIfExists(snapshotPath);
});
(0, node_test_1.it)('should not be created and return `false` when `failOnMissingSnapshot` is set to `true`', () => {
(0, node_test_1.it)('should not be created and return `false` when `failOnMissingSnapshot` is set to `true`', async () => {
const snapshotName = 'fail-on-missing-snapshot-when-failOnMissingSnapshot-is-set-to-true';
const snapshotPath = (0, path_1.join)(__dirname, compare_pdf_to_snapshot_1.snapshotsDirName, snapshotName + '.png');
if ((0, fs_1.existsSync)(snapshotPath)) {
(0, fs_1.unlinkSync)(snapshotPath);
}
return (0, compare_pdf_to_snapshot_1.comparePdfToSnapshot)(singlePageSmallPdfPath, __dirname, snapshotName, {
const snapshotPath = (0, node_path_1.join)(__dirname, compare_pdf_to_snapshot_1.SNAPSHOTS_DIR_NAME, snapshotName + '.png');
await removeIfExists(snapshotPath);
const isEqual = await (0, compare_pdf_to_snapshot_1.comparePdfToSnapshot)(singlePageSmallPdfPath, __dirname, snapshotName, {
failOnMissingSnapshot: true,
}).then((x) => {
assert.strictEqual(x, false);
assert.strictEqual((0, fs_1.existsSync)(snapshotPath), false, 'Snapshot should not be created');
});
assert.strictEqual(isEqual, false);
assert.strictEqual(await fileExists(snapshotPath), false, 'Snapshot should not be created');
});

@@ -180,0 +197,0 @@ });

@@ -1,1 +0,1 @@

{"version":3,"file":"compare-pdf-to-snapshot.test.js","sourceRoot":"","sources":["../src/compare-pdf-to-snapshot.test.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"compare-pdf-to-snapshot.test.js","sourceRoot":"","sources":["../src/compare-pdf-to-snapshot.test.ts"],"names":[],"mappings":"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"}

@@ -9,3 +9,2 @@ "use strict";

const conversions_1 = require("../conversions");
const createCanvasContext_1 = require("./createCanvasContext");
// pdfjs location

@@ -41,18 +40,17 @@ const PDFJS_DIR = path.join(path.dirname(require.resolve('pdfjs-dist')), '..');

const images = [];
const canvas = (0, createCanvasContext_1.createCanvasContext)();
const totalPages = pdfDocument.numPages;
for (let idx = 1; idx <= totalPages; idx += 1) {
const page = await pdfDocument.getPage(idx);
const canvasFactory = pdfDocument.canvasFactory;
const viewport = getPageViewPort(page, dpi);
canvas.resize(viewport.width, viewport.height);
// @ts-expect-error unknown method on Object
const canvasAndContext = canvasFactory.create(viewport.width, viewport.height);
const renderParameters = {
// @ts-expect-error type mismatch between web and node.js canvas
canvasContext: canvas.context,
canvasContext: canvasAndContext.context,
viewport,
};
await page.render(renderParameters).promise;
images.push(toImage(canvasAndContext.canvas));
page.cleanup();
images.push(toImage(canvas));
}
canvas.dispose();
return toJimpInstances(images);

@@ -69,15 +67,4 @@ };

const renderPdfPages = mkPdfPagesRenderer(pdfDocument, opts.dpi);
/**
* For faster processing, we want to use `Jimp.fromBitmap`. However, it
* internally uses `instanceof`, which doesn't work well with Jest due to
* [Jest globals differing from Node globals](https://github.com/jestjs/jest/issues/2549).
*/
// @ts-expect-error we have to assert if running in jest env
if (typeof jest !== 'undefined') {
return renderPdfPages((canvas) => canvas.toPngBuffer(), (images) => Promise.all(images.map((x) => jimp_1.Jimp.read(x).then((x) => x))));
}
else {
return renderPdfPages((canvas) => jimp_1.Jimp.fromBitmap(canvas.toImageData()), (images) => Promise.resolve(images));
}
return renderPdfPages((canvas) => canvas.toBuffer('image/png'), (images) => Promise.all(images.map((x) => jimp_1.Jimp.read(x).then((x) => x))));
}
//# sourceMappingURL=pdf2png.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"pdf2png.js","sourceRoot":"","sources":["../../src/pdf2png/pdf2png.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"pdf2png.js","sourceRoot":"","sources":["../../src/pdf2png/pdf2png.ts"],"names":[],"mappings":"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"}
{
"name": "pdf-visual-diff",
"version": "0.12.0",
"version": "0.13.0",
"description": "Visual Regression Testing for PDFs in JavaScript",

@@ -49,7 +49,7 @@ "bin": "./lib/cli/index.js",

"jimp": "^1.6.0",
"pdfjs-dist": "^4.6.82",
"pdfjs-dist": "^4.8.69",
"yargs": "^17.7.2"
},
"devDependencies": {
"@eslint/js": "^9.10.0",
"@eslint/js": "^9.15.0",
"@types/eslint__js": "^8.42.3",

@@ -59,11 +59,11 @@ "@types/glob": "^8.1.0",

"@types/yargs": "^17.0.33",
"eslint": "^9.10.0",
"eslint-plugin-tsdoc": "^0.3.0",
"eslint": "^9.15.0",
"eslint-plugin-tsdoc": "^0.4.0",
"jest": "^29.7.0",
"prettier": "^3.3.3",
"prettier": "^3.4.1",
"ts-node": "^10.9.2",
"typedoc": "^0.26.7",
"typedoc": "^0.27.0",
"typescript": "^5.6.2",
"typescript-eslint": "^8.5.0"
"typescript-eslint": "^8.16.0"
}
}

@@ -9,2 +9,4 @@ # Test Visual Regression in PDFs

> [API Documentation](https://moshensky.github.io/pdf-visual-diff)
## Installation

@@ -25,3 +27,3 @@

This package exports a single function, [comparePdfToSnapshot](https://moshensky.github.io/pdf-visual-diff/functions/comparePdfToSnapshot.html), with the following signature:
This package exports [comparePdfToSnapshot](https://moshensky.github.io/pdf-visual-diff/functions/comparePdfToSnapshot.html) function, with the following signature:

@@ -37,6 +39,9 @@ ```ts

It compares a PDF to a persisted snapshot. If a snapshot does not exists, one is created.
When the function is executed, it has following **side effects**:
Compares a PDF to a persisted snapshot, with behavior for handling missing snapshots controlled by the `failOnMissingSnapshot` option.
- If a previous snapshot file does not exist, the PDF is converted to an image, saved as a snapshot, and the function returns `true`.
The function has the following **side effects**:
- If no snapshot exists:
- If `failOnMissingSnapshot` is `false` (default), the PDF is converted to an image, saved as a new snapshot, and the function returns `true`.
- If `failOnMissingSnapshot` is `true`, the function returns `false` without creating a new snapshot.
- If a snapshot exists, the PDF is converted to an image and compared to the snapshot:

@@ -46,3 +51,3 @@ - If they differ, the function returns `false` and creates two additional images next to the snapshot: one with the suffix `new` (the current view of the PDF as an image) and one with the suffix `diff` (showing the difference between the snapshot and the `new` image).

Returns a promise that resolves to `true` if the PDF matches the snapshot or if a new snapshot is created, and `false` if the PDF differs from the snapshot.
Returns a promise that resolves to `true` if the PDF matches the snapshot or if the behavior for a missing snapshot is configured to allow it. Returns `false` if the PDF differs from the snapshot or if `failOnMissingSnapshot` is `true` and the snapshot is missing.

@@ -49,0 +54,0 @@ For further details and [configuration options](https://moshensky.github.io/pdf-visual-diff/types/CompareOptions.html), please refer to the [API Documentation](https://moshensky.github.io/pdf-visual-diff).

import * as Canvas from 'canvas';
export type CanvasContextManager = {
context: Canvas.CanvasRenderingContext2D;
resize: (width: number, height: number) => void;
toPngBuffer: () => Buffer;
toImageData: () => Canvas.ImageData;
dispose: () => void;
};
export declare function createCanvasContext(): CanvasContextManager;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createCanvasContext = createCanvasContext;
const Canvas = require("canvas");
const assert = require("node:assert");
function createCanvasContext() {
let canvas = Canvas.createCanvas(1, 1);
let context = canvas.getContext('2d');
return {
context,
resize: (width, height) => {
assert(width > 0 && height > 0, 'Invalid canvas dimensions');
canvas.width = width;
canvas.height = height;
},
toPngBuffer: () => canvas.toBuffer('image/png'),
toImageData: () => context.getImageData(0, 0, canvas.width, canvas.height),
dispose: () => {
canvas.width = 0;
canvas.height = 0;
// Nullify for garbage collection
canvas = null;
context = null;
},
};
}
//# sourceMappingURL=createCanvasContext.js.map
{"version":3,"file":"createCanvasContext.js","sourceRoot":"","sources":["../../src/pdf2png/createCanvasContext.ts"],"names":[],"mappings":";;AAWA,kDAqBC;AAhCD,iCAAgC;AAChC,sCAAqC;AAUrC,SAAgB,mBAAmB;IACjC,IAAI,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAErC,OAAO;QACL,OAAO;QACP,MAAM,EAAE,CAAC,KAAa,EAAE,MAAc,EAAQ,EAAE;YAC9C,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,2BAA2B,CAAC,CAAA;YAC5D,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;YACpB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;QACxB,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC/C,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;QAC1E,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,CAAC,KAAK,GAAG,CAAC,CAAA;YAChB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;YACjB,iCAAiC;YACjC,MAAM,GAAG,IAAgC,CAAA;YACzC,OAAO,GAAG,IAAkD,CAAA;QAC9D,CAAC;KACF,CAAA;AACH,CAAC"}