Merge pull request #21607 from Snuffleupagus/viewerPreferences-Map

[api-minor] Convert `getViewerPreferences` to return data in a Map
This commit is contained in:
Jonas Jenwald 2026-07-20 22:14:55 +02:00 committed by GitHub
commit 028c02f539
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 14 additions and 14 deletions

View File

@ -1,5 +1,5 @@
{ {
"stableVersion": "6.1.200", "stableVersion": "6.1.200",
"baseVersion": "b168293c173b0b9befe462c0b254136cf038c3ef", "baseVersion": "eddd70a2ca1054ad2e0792972c3f2774b89f0cd2",
"versionPrefix": "6.1." "versionPrefix": "6.2."
} }

View File

@ -1076,17 +1076,18 @@ class Catalog {
break; break;
case "PrintPageRange": case "PrintPageRange":
// The number of elements must be even. // The number of elements must be even.
if (Array.isArray(value) && value.length % 2 === 0) { if (
const isValid = value.every( Array.isArray(value) &&
value.length % 2 === 0 &&
value.every(
(page, i, arr) => (page, i, arr) =>
Number.isInteger(page) && Number.isInteger(page) &&
page > 0 && page > 0 &&
(i === 0 || page >= arr[i - 1]) && (i === 0 || page >= arr[i - 1]) &&
page <= this.numPages page <= this.numPages
); )
if (isValid) { ) {
prefValue = value; prefValue = value;
}
} }
break; break;
case "NumCopies": case "NumCopies":
@ -1103,8 +1104,7 @@ class Catalog {
warn(`Bad value, for key "${key}", in ViewerPreferences: ${value}.`); warn(`Bad value, for key "${key}", in ViewerPreferences: ${value}.`);
continue; continue;
} }
prefs ??= Object.create(null); (prefs ??= new Map()).set(key, prefValue);
prefs[key] = prefValue;
} }
return shadow(this, "viewerPreferences", prefs); return shadow(this, "viewerPreferences", prefs);
} }

View File

@ -820,9 +820,9 @@ class PDFDocumentProxy {
} }
/** /**
* @returns {Promise<Object | null>} A promise that is resolved with an * @returns {Promise<Map | null>} A promise that is resolved with a {Map}
* {Object} containing the viewer preferences, or `null` when no viewer * containing the viewer preferences, or `null` when no viewer preferences
* preferences are present in the PDF file. * are present in the PDF file.
*/ */
getViewerPreferences() { getViewerPreferences() {
return this._transport.getViewerPreferences(); return this._transport.getViewerPreferences();

View File

@ -1760,7 +1760,7 @@ describe("api", function () {
it("gets non-default viewer preferences", async function () { it("gets non-default viewer preferences", async function () {
const prefs = await pdfDocument.getViewerPreferences(); const prefs = await pdfDocument.getViewerPreferences();
expect(prefs).toEqual({ Direction: "L2R" }); expect(prefs).toEqual(new Map([["Direction", "L2R"]]));
}); });
it("gets default open action", async function () { it("gets default open action", async function () {