@cadview/dwg

中文文档
0.2.0发布于 2026/02/19GPL-3.0-onlyTypeScriptESM + CJS零依赖近 30 天下载 3164

通过 LibreDWG WASM 支持@cadview/core的 DWG 文件格式

中文使用文档
文档目录16 节
  1. 许可证
  2. 安装
  3. 快速启动
  4. 独立使用
  5. WASM 预装
  6. API 密码
  7. dwgConverter: FormatConverter
  8. isDwg(buffer: ArrayBuffer): boolean
  9. getDwgVersion(buffer: ArrayBuffer): string | null
  10. getDwgReleaseName(version: string): string | null
  11. convertDwgToDxf(buffer: ArrayBuffer, options?: ConvertOptio…
  12. initWasm(options?: WasmOptions): Promise<void>
  13. isWasmReady(): boolean
  14. DWG_VERSIONS: Record<string, string>
  15. 构建 WASM 模块
  16. 许可证

@cadview/ dwg (英语)

DWG 文件格式支持 @ cadview/ core (中文(简体) ) 通过 自由数据工作组 编译为 Web Assembly .

在浏览器中将 DWG 文件完全转换为 DXF ——不需要服务器.

许可证

仅限GPL-3.0 ——本套件使用GPL许可的LibreDWG. 使用 @cadview/dwg 在您的申请中,将合并工作纳入GPL-3.0条款。 如果您无法遵守 GPL, 请不要使用此软件包 .

@cadview/core 和框架包装@cadview/react, (中文(简体) ), @cadview/svelte, (中文(简体) ), @cadview/vue) 保持麻省理工学院的许可证,对这个一揽子方案没有依赖性.

安装

npm install @cadview/dwg @cadview/core

快速启动

登记 dwgConverter 与 CadViewer 以自动处理 DXF 文件 :

import { CadViewer } from '@cadview/core';
import { dwgConverter } from '@cadview/dwg';

const viewer = new CadViewer(canvas, {
  formatConverters: [dwgConverter],
});

// loadFile() and loadBuffer() now handle both DXF and DWG
await viewer.loadFile(file);

使用框架包装:

// React
import { CadViewer } from '@cadview/react';
import { dwgConverter } from '@cadview/dwg';

<CadViewer file={file} formatConverters={[dwgConverter]} />
<!-- Svelte -->
<script>
  import { CadViewer } from '@cadview/svelte';
  import { dwgConverter } from '@cadview/dwg';
</script>

<CadViewer {file} formatConverters={[dwgConverter]} />
<!-- Vue -->
<script setup>
import { CadViewer } from '@cadview/vue';
import { dwgConverter } from '@cadview/dwg';
</script>

<CadViewer :file="file" :format-converters="[dwgConverter]" />

独立使用

您可以直接使用转换函数,而不使用 CadViewer数字 :

import { convertDwgToDxf, isDwg, getDwgVersion } from '@cadview/dwg';
import { parseDxf } from '@cadview/core';

// Check if a buffer is a DWG file
const buffer = await file.arrayBuffer();
if (isDwg(buffer)) {
  const version = getDwgVersion(buffer); // e.g. "AC1032"
  const dxfString = await convertDwgToDxf(buffer);
  const doc = parseDxf(dxfString);
}

WASM 预装

LibreDWG WASM模块(~2-5 MB)在第一次DWG转换时被懒惰地装入. 为避免用户第一次打开 DWG 文件时的延迟,在应用程序启动时预加:

import { initWasm } from '@cadview/dwg';

// Preload on app startup
initWasm();

// Or from a CDN
initWasm({ wasmUrl: 'https://cdn.example.com/libredwg.wasm' });

API 密码

dwgConverter: FormatConverter

预配置格式转换器,用于 CadViewer是因为 formatConverters 选项。 通过魔法字节检测出DWG文件,并通过LibreDWG WASM转换.

isDwg(buffer: ArrayBuffer): boolean

通过检查魔法字节来检测 DWG 格式( T)AC10 前缀 + 2 ASCII 数字。 回返 false 任何错误.

getDwgVersion(buffer: ArrayBuffer): string | null

取出6-字符 DWG 版本字符串( 如 . "AC1032") (中文(简体) ). 回返 null 非DWG缓冲器.

getDwgReleaseName(version: string): string | null

获得一个版本字符串(例如. "AC1032" → "R2018") (中文(简体) ).

convertDwgToDxf(buffer: ArrayBuffer, options?: ConvertOptions): Promise<string>

将 DWG 缓冲器转换为 DXF 字符串 。 拉齐将WASM模块初始化为一调.

选项 :

选项类型默认说明
timeoutnumber30000转换超时( ms (0 = 无超时))
wasmUrlstring—— 说自定义 URL .wasm 文件( 如 CDN)

initWasm(options?: WasmOptions): Promise<void>

预初始化WASM模块. 安全呼叫多次。 失败时自动重试 .

isWasmReady(): boolean

检查WASM模块是否已装入并准备就绪 .

DWG_VERSIONS: Record<string, string>

已知 DWG 版本字符串地图到 AutoCAD 发布名称 :

版本释放
AC1009 (英语)编号11/R12
AC1012 欧冠第13条
AC1014 化学文摘社14号公路
AC1015 (法语)R2000号公路
AC1018 (法语)共和国2004年
AC1021 (法语)共和国2007年
AC1024 (法语)R2010 (英语)
AC1027 (法语)第2013号公路
AC1032 (法语)第2018号公路

最小支持版本 : AC1012(R13) (法语)。 。 。 .

构建 WASM 模块

在DWG转换在运行时工作之前,必须使用Emscripten从LibreDWG编译出WASM模块.

先决条件:

  • 标记 SDK (单位:千美元)emsdk(中文(简体) )
  • Git (用于 LibreDWG 子模块)
# Add LibreDWG as a git submodule (one-time)
git submodule add https://github.com/LibreDWG/libredwg.git packages/dwg/wasm/libredwg/

# Build the WASM module
pnpm --filter @cadview/dwg build:wasm

此生成 dist/libredwg.js 财务报告和审定财务报表 dist/libredwg.wasm。 。 。 .

许可证

仅限GPL-3.0. 见 自由主义。 。 。 .

版本与发布记录

@cadview/dwg 共发布 1 个版本,首次发布于 2026/02/19;过去 12 个月发布了 1 个版本。

版本发布日期距今
0.2.0latest2026/02/198 个月前

关于 @cadview/dwg 的常见问题

@cadview/dwg 是什么?

通过 LibreDWG WASM 支持@cadview/core的 DWG 文件格式

如何安装 @cadview/dwg?

在项目目录运行 npm install @cadview/dwg,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@cadview/core(>=0.2.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@cadview/dwg 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@cadview/dwg 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@cadview/dwg 可以商用吗?

@cadview/dwg 使用 GPL-3.0-only 许可。强 Copyleft:分发包含该代码的软件时,整个作品需以 GPL-3.0 兼容许可开源,并附带专利与反锁定条款。仅内部使用不触发此义务。以上为概括,不构成法律意见,请以许可原文为准。

@cadview/dwg 的下载量有多少?

根据 npm 官方下载统计,@cadview/dwg 在 2026/10/09 – 2026/11/07 这 30 天内被下载 3,164 次,日均约 105 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cadview/dwg 还在维护吗?

最新版本 0.2.0 发布于 2026/02/19(8 个月前);至今共发布 1 个版本,其中过去 12 个月发布了 1 个;首次发布于 2026/02/19。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。