Eulergraph
    Preparing search index...

    Экспорт и импорт

    Для кого: интеграторы, добавляющие export/import в host-app.

    Что получите: SVG/PNG export, headless render, обзор ImportService.

    Предварительные знания: Сервисы движка, Сцены и проекты.


    Подключение:

    engine.enableServices(["ExportService"])
    const exportService = engine.services.ExportService
    const svgString = exportService?.toSVG({
    // SVGExportOptions — см. типы @etypes/export
    })

    exportService?.exportSVGFile("drawing.svg")

    Реализация: src/engine/services/ExportService/SVGExport/SVGExport.ts.

    const blob = await exportService?.toImage("PNG", "byPaper", {
    imagePaddings: 10,
    withGrid: false,
    imageScale: 1,
    })
    • view: "byPaper" — по размеру листа
    • view: "byShapes" — по bbox элементов
    • Максимальная сторона ~8192 px

    Низкоуровневый API для рендера снимка сцены без UI — drawSceneToCanvas из @engine/utils/canvas/drawSceneToCanvas. Используется внутри ExportService.toImage.

    Для интеграции обычно достаточно ExportService.toImage / toSVG. Прямой вызов drawSceneToCanvas требует контейнер, размер листа, JSON сцены, snapshot элементов, список сервисов и elementsLib — см. сигнатуру в src/engine/utils/canvas/drawSceneToCanvas.ts.


    engine.enableServices(["ImportService"])
    

    ImportService и конвертеры (Visio и др.) — src/engine/services/ImportService/, src/engine/converters/.

    Scope руководства: импорт доступен как сервис; детали каждого конвертера зависят от формата и лицензии. Для интеграции достаточно включить сервис и вызвать API из UI host-app (см. src/renderer/src/header/main-tool/file/).


    Проблема Решение
    toImage null Нет currentScene или пустая сцена
    SVG без элементов Не зарегистрированы types из JSON (elementsLib)
    Размытый PNG devicePixelRatio / scale — см. calcMaxImageScale