DOCX
媒体
Word 文档中的嵌入式媒体支持
Word 文档可以嵌入多种媒体类型。本包通过 image 属性提供图片支持,这是 DOCX 文件中使用的主要媒体类型。
详细的图片文档请参阅 图片。
支持的媒体类型
| 类型 | 格式 | JSON 属性 |
|---|---|---|
| 栅格图片 | JPG, PNG, GIF, BMP, TIF, ICO | image |
| 矢量图片 | SVG(带回退) | image |
| EMF/WMF | EMF, WMF | image |
视频和音频
OOXML 规范支持通过媒体关系嵌入视频和音频,但播放取决于打开文档的应用程序。对于复杂的媒体嵌入场景,可以考虑:
- 使用
Media工具函数管理媒体关系 - 将视频缩略图作为图片嵌入,并添加指向在线视频 URL 的超链接
OLE 对象
通过 object 运行子元素内联嵌入 OLE 对象(如 Excel 工作表、ActiveX 控件)。该对象渲染一个 VML 预览(iconImage)并引用嵌入的二进制(embed):
import { generateDocument } from "@office-open/docx";
await generateDocument({
sections: [
{
children: [
{
paragraph: {
children: [
{
object: {
width: "5.3cm",
height: "2.6cm",
iconImage: { data: iconBytes, type: "emf", title: "Excel Sheet" }, // 预览
embed: {
data: oleBytes, // Uint8Array 或 base64 data URL
progId: "Excel.Sheet.12",
drawAspect: "icon", // "content" | "icon"
},
},
},
],
},
},
],
},
],
});
object 选项
| 选项 | 类型 | 说明 |
|---|---|---|
width | number | UniversalMeasure | 显示宽度(数字 = EMU) |
height | number | UniversalMeasure | 显示高度 |
dxaOrig | number | 原始宽度(twips) |
dyaOrig | number | 原始高度(twips) |
iconImage | object | 预览 { data, type, title? } |
embed | object | 嵌入式 OLE { data, progId?, drawAspect?, fieldCodes? } |
link | object | 链接式 OLE(继承 embed,加 updateMode) |
control | object | ActiveX 控件 { rId, name?, shapeid? } |
movie | string | Movie 关系 id |
embed.data 与 iconImage.data 接受 Uint8Array 或 base64 data URL。解析时 w:object 会往返还原为同样的 { object } 运行子元素。
image 选项
| 选项 | 类型 | 说明 |
|---|---|---|
type | string | 图片格式("png"、"jpg"、"gif"、"bmp"、"svg") |
data | Buffer | Uint8Array | ArrayBuffer | string (data URL) | 图片数据(缓冲区或 base64) |
transformation | object | { width, height }(EMU 或通用度量) |
floating | object | 浮动定位(锚定或内联) |
altText | object | { title, description } 用于无障碍 |