chore(pdf-server): switch pdf-lib to maintained @cantoo/pdf-lib fork (#651)
The original pdf-lib package has been unmaintained since Nov 2021. @cantoo/pdf-lib is an actively maintained, API-compatible fork with ongoing releases and accumulated bugfixes. Also updates test assertions from the deprecated PDFNumber.value() to PDFNumber.asNumber() per the fork's API guidance.
This commit is contained in:
parent
0008d3b78f
commit
3cf5b588a1
4 changed files with 94 additions and 37 deletions
|
|
@ -25,11 +25,11 @@
|
|||
"build:mcpb": "npm run build && node build-mcpb.mjs"
|
||||
},
|
||||
"dependencies": {
|
||||
"@cantoo/pdf-lib": "^2.6.5",
|
||||
"@modelcontextprotocol/ext-apps": "^1.0.0",
|
||||
"@modelcontextprotocol/sdk": "^1.29.0",
|
||||
"cors": "^2.8.5",
|
||||
"express": "^5.1.0",
|
||||
"pdf-lib": "^1.17.1",
|
||||
"pdfjs-dist": "^5.0.0",
|
||||
"zod": "^4.1.13"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import path from "node:path";
|
|||
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
||||
import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js";
|
||||
import { getDocument } from "pdfjs-dist/legacy/build/pdf.mjs";
|
||||
import { PDFDocument } from "pdf-lib";
|
||||
import { PDFDocument } from "@cantoo/pdf-lib";
|
||||
import { makeRandomJpeg } from "../../tests/helpers/range-counting-server";
|
||||
import {
|
||||
createPdfCache,
|
||||
|
|
|
|||
|
|
@ -18,7 +18,13 @@ import {
|
|||
type PdfAnnotationDef,
|
||||
type AnnotationDiff,
|
||||
} from "./pdf-annotations";
|
||||
import { PDFDocument, PDFDict, PDFName, PDFArray, PDFNumber } from "pdf-lib";
|
||||
import {
|
||||
PDFDocument,
|
||||
PDFDict,
|
||||
PDFName,
|
||||
PDFArray,
|
||||
PDFNumber,
|
||||
} from "@cantoo/pdf-lib";
|
||||
|
||||
// =============================================================================
|
||||
// Diff Model
|
||||
|
|
@ -1074,16 +1080,16 @@ describe("buildAnnotatedPdfBytes", () => {
|
|||
// Check /C (stroke color) = [1, 0, 0] for #ff0000
|
||||
const cArr = annotDict.get(PDFName.of("C")) as PDFArray;
|
||||
expect(cArr).toBeDefined();
|
||||
expect((cArr.get(0) as PDFNumber).value()).toBe(1); // r
|
||||
expect((cArr.get(1) as PDFNumber).value()).toBe(0); // g
|
||||
expect((cArr.get(2) as PDFNumber).value()).toBe(0); // b
|
||||
expect((cArr.get(0) as PDFNumber).asNumber()).toBe(1); // r
|
||||
expect((cArr.get(1) as PDFNumber).asNumber()).toBe(0); // g
|
||||
expect((cArr.get(2) as PDFNumber).asNumber()).toBe(0); // b
|
||||
|
||||
// Check /IC (fill color) = [0, 1, 0] for #00ff00
|
||||
const icArr = annotDict.get(PDFName.of("IC")) as PDFArray;
|
||||
expect(icArr).toBeDefined();
|
||||
expect((icArr.get(0) as PDFNumber).value()).toBe(0); // r
|
||||
expect((icArr.get(1) as PDFNumber).value()).toBe(1); // g
|
||||
expect((icArr.get(2) as PDFNumber).value()).toBe(0); // b
|
||||
expect((icArr.get(0) as PDFNumber).asNumber()).toBe(0); // r
|
||||
expect((icArr.get(1) as PDFNumber).asNumber()).toBe(1); // g
|
||||
expect((icArr.get(2) as PDFNumber).asNumber()).toBe(0); // b
|
||||
});
|
||||
|
||||
it("adds freetext annotation to PDF", async () => {
|
||||
|
|
@ -1159,9 +1165,9 @@ describe("buildAnnotatedPdfBytes", () => {
|
|||
// Check /C color
|
||||
const cArr = annotDict.get(PDFName.of("C")) as PDFArray;
|
||||
expect(cArr).toBeDefined();
|
||||
expect((cArr.get(0) as PDFNumber).value()).toBe(0);
|
||||
expect((cArr.get(1) as PDFNumber).value()).toBe(1);
|
||||
expect((cArr.get(2) as PDFNumber).value()).toBe(0);
|
||||
expect((cArr.get(0) as PDFNumber).asNumber()).toBe(0);
|
||||
expect((cArr.get(1) as PDFNumber).asNumber()).toBe(1);
|
||||
expect((cArr.get(2) as PDFNumber).asNumber()).toBe(0);
|
||||
|
||||
// Check appearance stream exists and contains the color
|
||||
const ap = annotDict.get(PDFName.of("AP")) as PDFDict;
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import {
|
|||
PDFOptionList,
|
||||
PDFRadioGroup,
|
||||
type PDFForm,
|
||||
} from "pdf-lib";
|
||||
} from "@cantoo/pdf-lib";
|
||||
|
||||
// =============================================================================
|
||||
// Types
|
||||
|
|
|
|||
Loading…
Reference in a new issue