Fabric.js Document Engine

搜索文档

查找页面或章节

EN

辅助函数

查看 Markdown

主入口里的几个小函数,浏览器和 Node 都能用。

主入口在 createDocumentEngine 之外还导出了几个文档引擎辅助函数。浏览器相关的函数把引擎接入页面,文档相关的函数在 Node 里无需画布也能运行。

浏览器辅助函数

function bindKeyboardShortcuts(engine: UndoRedoTarget, options?: KeyboardShortcutOptions): () => void

Ctrl/Cmd+Z undoes. Ctrl/Cmd+Shift+Z and Ctrl+Y redo. Ignored while the user types in an input or in Fabric text. Returns an unbind function.

function bindUnsavedChangesWarning(engine: UnsavedChangesSource, target?: EventTarget): () => void

Asks the browser to confirm before a page with unsaved changes closes. Returns an unbind function.

function downloadExport(result: DownloadableExport, fileName?: string): void

Starts a browser download of an export result.

NameTypeDefaultDescription
targetEventTargetwindowWhere to listen for key presses.

适用于任何框架的状态

function createDocumentStateStore(engine: DocumentEngine): DocumentStateStore

Framework-free { getSnapshot, subscribe, destroy } with DocumentState. Fits Vue, Svelte and useSyncExternalStore.

文档辅助函数

这些文档引擎辅助函数在任何地方都能运行,包括服务器:

function validateDocument(value: unknown): DocumentIssue[]

Checks a value against the document format. Returns a list of issues with the path of each problem.

function migrateDocument(value: unknown, context: MigrationContext, steps?: Readonly<Record<number, Migration>>, targetVersion?: number): MigrationResult

Upgrades an older document or plain Fabric JSON to the current format. Useful for server-side batch upgrades.

function detectSchemaVersion(value: unknown): number | undefined

Returns 1 for a document, 0 for plain Fabric JSON, otherwise undefined.

function secureDocument(input: unknown, limits?: ContentLimits): unknown

Removes prototype keys and enforces the object and depth limits. Throws UNSAFE_DOCUMENT.

function isSafeImageUrl(url: string): boolean

The default image address rule: http, https, blob, relative addresses and data:image/ are allowed.

错误

function isDocumentEngineError(value: unknown): value is DocumentEngineError

Type guard for DocumentEngineError, which carries a stable code.

示例:在服务器上检查上传

import {
  migrateDocument,
  secureDocument,
  validateDocument,
} from "fabricjs-document-engine";
 
const safe = secureDocument(body, { maxObjects: 20000 });
const { document } = migrateDocument(safe, {
  canvasWidth: 1200,
  canvasHeight: 800,
});
const issues = validateDocument(document);

关于这些文档引擎辅助函数的更多内容,见安全和迁移。

文档引擎辅助函数 | Fabric.js Document Engine