بنقرة واحدة
md-to-word
将 Markdown 文件转换为 Word 兼容的 HTML(.doc)文件,保留完整排版格式,同时完美兼容微信公众号平台。当用户要求从 .md 文件创建 .doc 文件或需要 Word 兼容文档输出时触发。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
将 Markdown 文件转换为 Word 兼容的 HTML(.doc)文件,保留完整排版格式,同时完美兼容微信公众号平台。当用户要求从 .md 文件创建 .doc 文件或需要 Word 兼容文档输出时触发。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | md-to-word |
| description | 将 Markdown 文件转换为 Word 兼容的 HTML(.doc)文件,保留完整排版格式,同时完美兼容微信公众号平台。当用户要求从 .md 文件创建 .doc 文件或需要 Word 兼容文档输出时触发。 |
将 Markdown(.md)文件转换为 Microsoft Word 兼容的 HTML 文件(.doc 扩展名)。输出为单个自包含的 HTML 文件,Word 可直接打开并保留完整排版格式,同时完美兼容微信公众号平台。
完整读取指定的 .md 文件,理解其结构和内容。
按照以下严格技术要求创建 .doc 扩展名的 HTML 文件:
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta charset="utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--[if gte mso 9]>
<xml>
<w:WordDocument>
<w:View>Print</w:View>
<w:Zoom>100</w:Zoom>
<w:DoNotOptimizeForBrowser />
</w:WordDocument>
</xml>
<![endif]-->
<style>
/* Word 专用样式(微信会过滤此块,因此每个元素必须有内联 style) */
</style>
</head>
<body>
/* 内容写在这里,每个元素必须带内联 style 属性 */
</body>
</html>
每个 HTML 元素必须同时具备两种样式来源:
<style> 块中的类样式:供 Word 使用,确保 Word 中排版完整style 属性:供微信使用,当微信过滤掉 <style> 块后,内联样式仍能保留错误做法:<h2 class="heading2">标题</h2>
正确做法:<h2 class="heading2" style="font-size:20px;font-weight:bold;color:#1a1a2e;border-bottom:1px solid #e0e0e0;padding-bottom:6px;margin-top:28px;margin-bottom:12px;">标题</h2>
关键:内联 style 属性是微信兼容性的生命线,绝不能省略。
@page {
size: A4;
margin: 2.54cm 3.18cm 2.54cm 3.18cm;
}
| 元素 | 关键样式属性 |
|---|---|
body | font-family:'Microsoft YaHei',SimSun,Arial,sans-serif; font-size:14px; line-height:1.8; color:#333333; |
h1 | font-size:26px; font-weight:bold; color:#1a1a2e; text-align:center; border-bottom:3px solid #4361ee; padding-bottom:12px; margin-top:20px; margin-bottom:10px; |
h2 | font-size:20px; font-weight:bold; color:#1a1a2e; border-bottom:1px solid #e0e0e0; padding-bottom:6px; margin-top:28px; margin-bottom:12px; |
h3 | font-size:16px; font-weight:bold; color:#2d3748; margin-top:20px; margin-bottom:8px; |
h4 | font-size:14px; font-weight:bold; color:#4a5568; margin-top:16px; margin-bottom:6px; |
p | margin-top:6px; margin-bottom:6px; text-align:justify; |
blockquote | margin:12px 0; padding:10px 16px; border-left:4px solid #4361ee; background-color:#f7f8fc; color:#555555; font-size:13px; |
code(行内) | font-family:Consolas,'Courier New',monospace; background-color:#f0f0f0; padding:1px 5px; border-radius:3px; font-size:13px; color:#e83e8c; |
table | border-collapse:collapse; width:100%; margin:12px 0; font-size:13px; |
th | background-color:#4361ee; color:#ffffff; font-weight:bold; padding:8px 12px; border:1px solid #3451d1; text-align:left; |
td | padding:8px 12px; border:1px solid #e0e0e0; vertical-align:top; |
ul, ol | margin:8px 0; padding-left:24px; |
li | margin-bottom:4px; |
hr | border:none; border-top:1px solid #e0e0e0; margin:20px 0; |
微信公众号编辑器会对粘贴内容执行三轮清洗:
<script>、<style>、<iframe> 等危险标签及事件属性(onclick、onerror 等)<div> 转为 <p>,删除所有 class 和大部分 style必须严格遵循以下规则:
微信会过滤 <style> 块和 class 属性,只有元素上的内联 style 属性有机会存活。
✗ <p class="intro">段落</p> ← class 无效
✗ <p>段落</p>(样式仅在 <style> 块中定义) ← <style> 被过滤
✓ <p style="font-size:14px;color:#333;">段落</p> ← 内联样式存活
安全可用:
font-size、color、line-height、text-align、letter-spacing、font-weight、font-style、text-decorationmargin、padding、border、border-radius、background、background-colordisplay、width、text-alignfont-family(仅系统字体生效)禁止使用:
position: fixed/sticky/absolute — 被过滤transform — 被过滤float — 不稳定,行为不可预测flex / grid — 部分支持但不可靠box-shadow — 有限支持@media 查询 — 完全不支持opacity — 不稳定overflow — 不稳定安全可用:
<p>、<br>、<span>、<strong>、<b>、<em>、<i>、<u>、<s>、<del><h1>~<h3>(注意:<h1>、<h2> 可能被转为 <p>,建议用 <h3> 或 <p><strong> 替代以确保标题样式存活)<ul>、<ol>、<li>(不支持嵌套列表,不支持自定义符号/序号)<blockquote><code>、<pre>(有限支持,建议用 <section> 模拟代码块)<table>、<thead>、<tbody>、<tr>、<th>、<td><section>、<div>(<div> 可能被转为 <p>)<img>(必须使用微信图床地址,本地图片需重新上传)<a>(仅支持微信公众号文章链接)禁止使用:
<script> — 完全过滤<style> — 完全过滤(仅作为 Word 降级方案保留)<iframe> — 完全过滤(腾讯视频除外)<form> 及表单元素 — 完全过滤<xmp> — 微信可能过滤,不推荐用于微信场景<meta>、<link> — 完全过滤onclick、onload 等)— 完全过滤微信对代码块的支持极为有限,<xmp> 标签可能被过滤。采用以下方案:
方案 A:<section> 模拟代码块(微信推荐)
<section
style="font-family:Consolas,'Courier New',monospace; font-size:12px; line-height:1.6; background-color:#f8f9fa; border:1px solid #e0e0e0; border-radius:4px; padding:12px 16px; margin:10px 0; white-space:pre; overflow-x:auto; color:#333333; display:block;">
代码内容写在这里(HTML 标签使用全角括号)
</section>
方案 B:<xmp> 标签(Word 推荐)
<xmp
style="font-family:Consolas,'Courier New',monospace; font-size:12px; line-height:1.6; background-color:#f8f9fa; border:1px solid #e0e0e0; border-radius:4px; padding:12px 16px; margin:10px 0; white-space:pre; color:#333333; display:block;"
>
代码内容写在这里(无需转义)
</xmp>
选择策略:
<section>)<xmp>)<section>),并在代码内容中将 HTML 标签替换为全角括号在正文中提及 HTML 标签时(如"注入到 <head> 中"),必须将尖括号替换为全角等价字符:
| 原始写法 | 替换为 |
|---|---|
<head> | <head> |
</body> | </body> |
<script> | <script> |
<link> | <link> |
<meta> | <meta> |
<style> | <style> |
<div> | <div> |
全角尖括号字符: < (U+FF1C) 和 > (U+FF1E)
不得使用 <、>、&、"、 等转义实体。微信可能不解析这些实体,导致显示异常。
微信支持 <table> 但宽度自适应较差,需注意:
width:100%stylecolspan/rowspan 不稳定)https://mmbiz.qpic.cn/...),本地路径和外部 CDN 均会失效width 属性和内联 style:style="width:100%;height:auto;display:block;"-apple-system,BlinkMacSystemFont,'Helvetica Neue','PingFang SC','Microsoft YaHei',SimSun,sans-seriffont-size 单位必须使用 px(微信不解析 rem、em、%)<ul>、<ol>、<li> 可用,但不支持嵌套列表<p> 模拟<h1>、<h2> 可能被微信转为 <p>,丢失标题语义<p><strong> 替代标题标签,确保样式存活:<p style="font-size:20px;font-weight:bold;color:#1a1a2e;border-bottom:1px solid #e0e0e0;padding-bottom:6px;margin-top:28px;margin-bottom:12px;"><strong>二级标题</strong></p>
<h1>~<h4> 标签(配合内联 style),因为 Word 正确支持标题标签| Markdown 元素 | HTML 输出(含内联样式) |
|---|---|
# 一级标题 | <h1 style="...">一级标题</h1> |
## 二级标题 | <h2 style="...">二级标题</h2> |
### 三级标题 | <h3 style="...">三级标题</h3> |
**粗体** | <strong>粗体</strong> |
*斜体* | <em>斜体</em> |
`代码` | <code style="...">代码</code> |
> 引用 | <blockquote style="...">引用</blockquote> |
| 代码块 | <section style="...">代码块</section> 或 <xmp style="...">代码块</xmp> |
| 表格 | <table style="..."> 配合带内联样式的 <th>、<tr>、<td> |
- 列表项 | <ul style="..."><li style="...">列表项</li></ul> |
1. 列表项 | <ol style="..."><li style="...">列表项</li></ol> |
--- | <hr style="..."> |
| 正文中的 HTML 标签引用 | 全角尖括号:<tag> |
源 Markdown 中的 ASCII 字符画图表,使用 <section> 包裹并添加内联样式(边框、等宽字体、背景色),确保微信兼容:
<section style="border:1px solid #d0d0d0; padding:12px 16px; margin:10px 0; background-color:#fafbfc; font-family:Consolas,'Courier New',monospace; font-size:12px; line-height:1.5; white-space:pre;">
┌─────────────┐ │ 架构图内容 │ └─────────────┘
</section>
将生成的 HTML 内容保存为 .doc 文件,放在与源 .md 文件相同的目录下,文件名相同但扩展名为 .doc。
示例:源文件为 versions/0.1.0.md,输出为 versions/0.1.0.doc。
确认文件创建成功,并总结关键格式化决策。
生成文件后,逐项检查以下内容:
style 属性?position、transform、float、flex、grid、animation)?<script>、<iframe>、<form>)?<section> 或 <xmp> 而非 <pre><code>?</>)?<、>、&)?100%?font-size 单位是否全部使用 px?<style> 块 + 每个元素的内联 style,两者缺一不可