此插件仅作为 付费附加组件 提供,需订阅 TinyMCE 订阅 后使用。
导出到 Microsoft Word 功能会收集通过 tinymce.editor.getContent() 方法生成的 HTML,并将其与编辑器默认内容样式及插件配置中提供的样式合并。合并后的内容和样式将由内置的服务器端转换器服务处理,该服务可自行托管或基于云端。处理完成后,系统将生成 Word 文件并返回到用户的浏览器,以便用户以 Word 格式保存到本地磁盘或驱动器。
交互示例
HTML
<textarea id="exportword">
<h1>Streamline - 新一代学习管理系统(LMS)</h1>
<p>本文档全面概述了Streamline学习管理系统(LMS)项目。</p>
<figure class="image">
<img src="https://images.unsplash.com/photo-1522199755839-a2bacb67c546?q=80&w=2072&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
alt="笔记本电脑置于光洁木桌上,旁边有一个青铜色杯子,营造出温馨的工作空间氛围" width="573" height="429">
<figcaption>优雅的工作空间:笔记本电脑置于光洁木桌上,旁边有一个青铜色杯子,营造出温馨且富有成效的氛围。</figcaption>
</figure>
<p>照片作者:<a href="https://unsplash.com/@anete_lusina">Anete Lūsiņa</a>,来自<a href="https://unsplash.com">Unsplash</a></p>
<h2>项目目标</h2>
<p>Streamline旨在通过为教育者和学习者提供强大且用户友好的平台,彻底变革在线学习。主要目标包括:</p>
<ul>
<li><strong>赋能教育者</strong>:提供直观的内容创建、课程管理和学生评估工具。</li>
<li><strong>提升学生的学习体验</strong>:通过生动的内容交付、互动功能和个性化学习路径实现。</li>
<li><strong>提高可访问性和可扩展性</strong>:以满足多样化的学习需求,并支持不断增长的用户群体。</li>
</ul>
<h2>系统功能</h2>
<p>Streamline旨在通过一套全面的功能来丰富学习过程:</p>
<ul>
<li><strong>内容管理系统(CMS)</strong>:直观的界面使教育者能够创建和上传各种学习资料,包括视频、文档、演示文稿和测验。</li>
<li><strong>课程管理工具</strong>:以清晰的目标构建课程,组织内容模块,并有效管理学生注册。</li>
<li><strong>互动学习活动</strong>:包括游戏化、讨论论坛、协作作业等,以保持学生的参与度。</li>
<li><strong>评估与分析</strong>:用于创建测验、跟踪学生进度、生成报告和确定改进领域的工具。</li>
<li><strong>个性化学习路径</strong>:机器学习算法根据学生的进度和需求提供定制的内容推荐。</li>
</ul>
<h3>表1:Streamline - 目标用户群体</h3>
<table style="border-collapse: collapse; width: 100%;" border="1">
<thead>
<tr>
<th style="text-align: left;">用户群体</th>
<th style="text-align: left;">优势</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>教育者</strong></td>
<td>便捷的内容创建、高效的课程管理和有价值的学生洞察。</td>
</tr>
<tr>
<td><strong>学习者</strong></td>
<td>生动的学习体验、个性化学习路径和互动协作。</td>
</tr>
<tr>
<td><strong>管理员</strong></td>
<td>可扩展的平台管理、用户访问控制和全面的报告工具。</td>
</tr>
</tbody>
</table>
<h2>技术栈</h2>
<p>Streamline将利用强大的技术栈来确保性能、可扩展性和安全性:</p>
<ul>
<li><strong>前端</strong>:ReactJS,用于构建响应式且用户友好的界面。</li>
<li><strong>后端</strong>:Node.js,用于高效的服务器端操作。</li>
<li><strong>数据库</strong>:MongoDB,用于灵活且可扩展的数据存储。</li>
<li><strong>云平台</strong>:Amazon Web Services(AWS),用于可靠的托管和基础设施。</li>
</ul>
<h2>项目时间线</h2>
<ul>
<li><strong>阶段1(2个月)</strong>:系统设计、核心功能开发和前端原型创建。</li>
<li><strong>阶段2(3个月)</strong>:集成高级功能,如个性化学习和评估工具。</li>
<li><strong>阶段3(1个月)</strong>:严格的测试、错误修复和UI优化。</li>
<li><strong>阶段4(持续进行)</strong>:部署、用户反馈收集和持续的迭代开发。</li>
</ul>
<blockquote>
<p><em>此时间线为初步计划,可能会有变动。</em></p>
</blockquote>
<h2>结论</h2>
<p>Streamline LMS有望成为在线教育领域的变革者。通过赋能教育者和提升学生体验,它旨在让所有人都能获得有效且易于访问的学习资源。</p>
</textarea>JS
tinymce.init({
selector: 'textarea#exportword',
height: '800px',
plugins: [
"exportword", "advlist", "anchor", "autolink", "charmap", "code", "fullscreen",
"help", "image", "insertdatetime", "link", "lists", "media",
"preview", "searchreplace", "table", "visualblocks",
],
toolbar: "undo redo | exportword | styles | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image",
exportword_converter_options: {
document: {
size: 'A4',
margins: {
top: "1in",
bottom: "1in",
left: "1in",
right: "1in"
}
},
watermark: {
source: 'http://moxiecode.cachefly.net/tinymce/v9/images/logo.png',
washout: true
},
}
});导出到 Word 的已知问题
生成的
.docx文件可能与旧版 Word 不完全兼容。Enhanced Media Embed 不会包含在导出的文档中,导致控制台出现错误 "The Export to Word plugin requires the
exportword_service_urlto be configured"。
使用 Tiny Cloud 服务的基本设置
要将 Export to Word 插件添加到编辑器,请在编辑器配置的 plugins 选项中添加 exportword。
例如:
tinymce.init({
selector: 'textarea',
plugins: 'exportword',
toolbar: 'exportword',
// Required for the cloud-based Export to Word plugin with Tiny Cloud
// Create a JWT key in the Customer Portal for trial functionality to enable watermark-free exports during the trial period
exportword_token_provider: () => {
return fetch('http://localhost:3000/jwt', { // specify your token endpoint
method: 'POST',
headers: { 'Content-Type': 'application/json' },
}).then(response => response.json());
},
});有关如何使用 module bundlers 打包此插件的信息,请参阅 Bundling TinyMCE - Overview。
有关 exportword_token_provider 选项的更多信息,请参阅 exportword_token_provider
使用 Tiny Cloud 服务时,Export to Word 插件需要 JWT 认证。
认证设置:
在客户门户中创建 JWT 密钥
配置
exportword_token_provider选项以指定获取 JWT token 的端点有关如何设置 Export to Word 的 JWT 认证,请参阅示例:Export to Word with JWT authentication (Node.js) 或 Export to Word with JWT authentication (PHP)
试用期间的行为
试用期间:
使用 JWT:完整功能、无限使用、无水印。
不使用 JWT:功能完整但有水印。
试用后:
使用 Export to Word 插件 + JWT:完整功能(基于订阅)
不使用插件:插件权限将
禁用且功能不再可用。请访问 账户门户 以获取您的 JWT 密钥并测试完整功能。
当在防火墙或正向代理后使用云托管服务时,请确保将 *.tiny.cloud 加入允许列表,并且不会剥离所需的 HTTP 头。详情请参阅 Firewall and proxy allowlisting。使用自托管服务的基本设置
要使用自托管版本的 Export to Word 插件,您需要将 exportword_service_url 选项设置为服务的 URL。
tinymce.init({
selector: 'textarea',
plugins: 'exportword',
toolbar: 'exportword',
exportword_service_url: 'http://localhost:8080/' // Update with the URL of the service you are using such as 'http://myserver.com/'
});
exportword_service_url选项会自动在提供的 URL 后附加/v2/convert/html-docx,因此只需基础 URL。例如,如果服务托管在http://localhost:8080/v2/convert/html-docx,则exportword_service_url选项应设置为http://localhost:8080/。在生产环境中使用时,请确保将exportword_service_url更新为生产 URL,例如https://myserver.com/。
附加配置
分页符支持为确保分页符在导出文档中正常工作,请配置
pagebreak_separator和pagebreak_split_block选项:tinymce.init({ selector: 'textarea', plugins: 'exportword', toolbar: 'exportword', pagebreak_separator: '<div style="break-after: page"></div>', pagebreak_split_block: true, // ... other configuration options });对于 DOCX 导出,分页符将被转换为 Word 兼容的分页符。
导出特定的内容过滤
要生成用于导出的内容,Export to Word 插件会使用设置为 word 的 export 属性调用 tinymce.editor.getContent() 方法。TinyMCE 会将此 export 属性添加到 GetContent 事件 和序列化器节点过滤器的数据中。序列化器节点过滤器或 GetContent 事件处理程序可以读取 export 属性,以便仅在 Export to Word 导出期间过滤内容,而不改变标准 tinymce.editor.getContent() 调用的结果。
以下序列化器节点过滤器会在 Export to Word 导出期间移除 footer 元素:
editor.serializer.addNodeFilter('footer', (nodes, name, args) => {
if (args.export === 'word') {
nodes.forEach((node) => node.remove());
}
});GetContent 事件处理程序可以读取相同的 export 属性:
editor.on('GetContent', (e) => {
if (e.export === 'word') {
e.content = removeFooterFromHtml(e.content);
}
});选项
以下配置选项会影响 Export to Word 插件的行为。
exportword_service_url
Export to Word 插件使用 HTML-to-DOCX 转换器服务来生成 Word 文件。
在为 on-premise 设置配置 Export to Word 插件时,此选项为必需。如果您需要访问此功能,请联系我们。有关使用 Docker 部署 Export to Word 服务端组件的详细说明,请参阅本地部署文档。
使用自定义主机时,请在 TinyMCE 配置中设置exportword_service_url选项以匹配您的主机。例如,如果您的自定义主机是mycustomhost.com,则将 URL 设置为https://mycustomhost.com/。
类型: String
示例:设置 exportword_service_url
tinymce.init({
selector: 'textarea',
plugins: 'exportword',
toolbar: 'exportword',
exportword_service_url: '<service_URL>' // 仅本地部署设置时需要
});exportword_token_provider
exportword_token_provider 选项可启用与基于令牌的身份验证服务的集成,以便导出 Word 文档。它提供了一种从指定端点获取身份验证令牌的机制。这确保了导出过程可以与服务器安全地通信。
类型: Function
默认值: undefined
返回数据: Token 对象
示例:使用 exportword_token_provider
tinymce.init({
selector: 'textarea',
plugins: 'exportword',
toolbar: 'exportword',
exportword_token_provider: () => { // 与 Tiny Cloud 一起使用 Export to Word 插件时需要。
return fetch('http://localhost:3000/jwt', { // 指定您的令牌端点
method: 'POST',
headers: { 'Content-Type': 'application/json' },
}).then(response => response.json());
},
});JWT 令牌的数据结构
包含有效编码令牌的对象必须符合以下结构:
{
token: "<encoded JWT string>"
}| 字段 | 类型 | 是否必需? | 描述 |
|---|---|---|---|
|
| 必需 | 用于身份验证和授权的 Base64 编码的 JSON Web Token (JWT)。 |
exportword_converter_options
exportword_converter_options 选项用于指定和配置与从编辑器转换和导出内容到 .docx Word 文件相关的各种选项。
类型: Object
从 TinyMCE 7.5.0 开始,exportword_converter_options 设置的默认值已更新为以下内容:默认值:exportword_converter_options: {
document: {
size: 'letter'
}
}示例:使用 exportword_converter_options
tinymce.init({
selector: 'textarea',
plugins: 'exportword',
toolbar: 'exportword',
exportword_service_url: '<service_URL>', // 使用本地部署服务时需要
exportword_converter_options: {
headers: {
first: {
html: "<p>我的文档页眉</p>",
css: "p { color: gray; }"
},
default: {
html: "<p>我的默认页眉</p>",
css: "p { color: blue; }"
}
},
footers: {
odd: {
html: "<p>我的奇数页页脚</p>",
css: "p { font-size: 10px; }"
},
even: {
html: "<p>我的偶数页页脚</p>",
css: "p { font-size: 12px; }"
}
},
document: {
orientation: "landscape",
size: "a3",
margins: {
top: "10mm",
bottom: "10mm",
left: "20mm",
right: "15mm"
}
},
},
});要使用此选项,Export to Word 插件需要配置 exportword_service_url 选项。有关
exportword_converter_options的详细信息,请参阅 Export to Word Premium 插件的 API 文档。
exportword_converter_style
exportword_converter_style 选项允许自定义应用于导出的 Word 文档的样式,提供了控制其外观的灵活性;但此选项不影响 header 和 footer 的独特样式。
类型: String
默认值: ''
示例:使用 exportword_converter_style
tinymce.init({
selector: 'textarea.tinymce',
plugins: 'exportword',
toolbar: 'exportword',
exportword_service_url: '<service_URL>', // 使用本地服务时需要
exportword_converter_options: {
headers: {
first: {
html: "<p>My document header</p>",
css: "p { color: gray; }"
},
default: {
html: "<p>My default header</p>",
css: "p { color: blue; }"
}
},
},
exportword_converter_style: 'p { color: cyan !important }' // 将覆盖 HTML 内容中设置的 <p> 标签样式
});watermark
watermark 选项允许集成者在导出的文档的每一页上包含半透明图像水印,这对于品牌推广、版权保护或装饰目的非常有用。
类型: Object
示例:使用 watermark
tinymce.init({
selector: "textarea",
plugins: ['exportword'],
toolbar: 'exportword',
exportword_converter_options: {
watermark: {
source: 'https://<your domain>/some-image.png',
washout: true,
}
}
});使用水印功能需要 exportword_converter_options。命令
Export to Word 插件提供以下 TinyMCE 命令。
| 命令 | 描述 |
|---|---|
ExportWord | 使用 |
tinymce.activeEditor.execCommand('ExportWord');API 参考
在 Export to Word API 参考文档中探索 Export to Word Premium 插件的全面 API 文档。