feat: 实现 DOCX 媒体预处理与跨端 PNG 捕获

This commit is contained in:
SkyJourney
2026-07-30 13:21:18 +08:00
parent 7831bc23f0
commit fe5d67fb6d
20 changed files with 1294 additions and 16 deletions
+53
View File
@@ -1,11 +1,14 @@
import { describe, expect, it } from "vitest";
import {
DOCX_MIME_TYPE,
DOCX_MEDIA_RASTER_SCALE,
DOCX_PANDOC_VERSION,
MAXIMUM_DOCX_MEDIA_EDGE_PIXELS,
MAXIMUM_DOCX_MARKDOWN_LENGTH,
createDocxFileName,
defaultExportConfig,
docxCapabilitySchema,
docxMediaCapturePlanSchema,
docxExportErrorResponseSchema,
docxExportRequestSchema
} from "../src/index.js";
@@ -111,4 +114,54 @@ describe("DOCX 共享协议", () => {
retryable: false
});
});
it("校验 DOCX PNG 媒体捕获计划", () => {
expect(DOCX_MEDIA_RASTER_SCALE).toBe(3.125);
expect(MAXIMUM_DOCX_MEDIA_EDGE_PIXELS).toBe(4096);
expect(
docxMediaCapturePlanSchema.parse({
targets: [
{
id: "docx-media-1",
kind: "mermaid",
ordinal: 1,
kindOrdinal: 1,
altText: "流程图",
caption: "处理流程",
displayWidthPx: 640,
displayHeightPx: 320,
captureX: 20,
captureY: 120,
captureWidthPx: 640,
captureHeightPx: 320,
rasterScale: 3.125
}
],
echartsErrors: [],
mermaidErrors: []
}).targets
).toHaveLength(1);
expect(
docxMediaCapturePlanSchema.safeParse({
targets: [
{
id: "../越界",
kind: "image",
ordinal: 1,
kindOrdinal: 1,
altText: "",
displayWidthPx: 100,
displayHeightPx: 100,
captureX: 0,
captureY: 0,
captureWidthPx: 100,
captureHeightPx: 100,
rasterScale: 3.125
}
],
echartsErrors: [],
mermaidErrors: []
}).success
).toBe(false);
});
});