























@@ -1,7 +1,11 @@
1+import { existsSync } from "node:fs";
2+import { createRequire } from "node:module";
3+import path from "node:path";
14import { beforeEach, describe, expect, it, vi } from "vitest";
253-const { canvasSizes, pdfDocument } = vi.hoisted(() => ({
6+const { canvasSizes, getDocumentMock, pdfDocument } = vi.hoisted(() => ({
47canvasSizes: [] as Array<{ width: number; height: number }>,
8+getDocumentMock: vi.fn(),
59pdfDocument: {
610numPages: 2,
711getPage: vi.fn(async () => ({
@@ -16,7 +20,7 @@ const { canvasSizes, pdfDocument } = vi.hoisted(() => ({
1620}));
17211822vi.mock("pdfjs-dist/legacy/build/pdf.mjs", () => ({
19-getDocument: vi.fn(() => ({ promise: Promise.resolve(pdfDocument) })),
23+getDocument: getDocumentMock,
2024}));
21252226vi.mock("@napi-rs/canvas", () => ({
@@ -30,9 +34,13 @@ vi.mock("@napi-rs/canvas", () => ({
30343135import { createPdfDocumentExtractor } from "./document-extractor.js";
323637+const require = createRequire(import.meta.url);
38+3339describe("PDF document extractor", () => {
3440beforeEach(() => {
3541canvasSizes.length = 0;
42+getDocumentMock.mockReset();
43+getDocumentMock.mockReturnValue({ promise: Promise.resolve(pdfDocument) });
3644pdfDocument.getPage.mockClear();
3745});
3846@@ -59,4 +67,34 @@ describe("PDF document extractor", () => {
5967expect(result?.images).toHaveLength(1);
6068expect(canvasSizes).toEqual([{ width: 10, height: 10 }]);
6169});
70+71+it("passes standardFontDataUrl to pdfjs getDocument as a package-root filesystem path", async () => {
72+const extractor = createPdfDocumentExtractor();
73+74+await extractor.extract({
75+buffer: Buffer.from("%PDF-1.4"),
76+mimeType: "application/pdf",
77+maxPages: 1,
78+maxPixels: 4_000_000,
79+minTextChars: 200,
80+});
81+82+expect(getDocumentMock).toHaveBeenCalledTimes(1);
83+const [params] = getDocumentMock.mock.calls[0] ?? [];
84+expect(params).toMatchObject({
85+disableWorker: true,
86+});
87+expect(typeof params.standardFontDataUrl).toBe("string");
88+89+const expectedStandardFontDataUrl =
90+path.join(path.dirname(require.resolve("pdfjs-dist/package.json")), "standard_fonts") + "/";
91+expect(params.standardFontDataUrl).toBe(expectedStandardFontDataUrl);
92+expect(path.isAbsolute(params.standardFontDataUrl)).toBe(true);
93+expect(params.standardFontDataUrl.endsWith("/")).toBe(true);
94+expect(params.standardFontDataUrl.startsWith("file://")).toBe(false);
95+expect(existsSync(params.standardFontDataUrl)).toBe(true);
96+expect(existsSync(path.join(params.standardFontDataUrl, "LiberationSans-Regular.ttf"))).toBe(
97+true,
98+);
99+});
62100});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。