将你的 markdown 文件转换为 MS Word(.docx)/ Convert your Markdown files to MS Word (.docx).
🚧 正在开发中 / Under development
- 在 Release 下载可执行文件(暂未提供 macOS 版)
- 在可执行文件所在目录,终端执行命令:
.\markdocx path/to/your/file.md,会在 md 文件的同目录下生成同名 docx 文件。
-
运行安装脚本:
./setup_ubuntu.sh
-
使用转换工具:
# 显示帮助信息 ./markdocx_ubuntu.sh # 转换markdown文件 ./markdocx_ubuntu.sh example/example.md # 指定输出文件 ./markdocx_ubuntu.sh input.md -o output.docx # 转换后自动打开文件 ./markdocx_ubuntu.sh input.md -a
# 安装依赖
/opt/miniconda3/envs/office-service/bin/pip install -r requirements.txt
# 运行转换
/opt/miniconda3/envs/office-service/bin/python src/markdocx.py example/example.md# 构建
./build_ubuntu.sh
# 使用构建的可执行文件
./dist/markdocx example/example.md完整命令示例:
markdocx input.md -o ouput.docx -s style.yaml -a其中:
-o可选参数,其后附上输出路径,默认保存到与input.md同目录位置、同名的 Word 文件。-s可选参数,其后附上定义样式的 YAML 文件的路径。默认使用内置样式src/config/default_style.yaml。-a可选参数,在完成导出后自动打开 Word 文件
注意,如果是路径中包含空格,需要用英文(半角)双引号包起来,如
markdocx "D:/my folder/the input.md" -o "D:/my folder/the output.md"-
行内的样式超过一个的句子会在解析时会被忽略,不会出现在最终word文件中。例如此类:
**又加粗又*斜体*** <u>**又加粗又*斜体*又下划线**</u>
请避免使用复合标记。
-
无序列表和有序列表目前最大解析层级为两级,超过两层的内容会被丢弃
MarkDocx 支持增强的图片下载功能,可以解决网络图片访问中的各种问题:
- ✅ SSL证书验证失败 - 支持自签名证书,解决企业内网图片访问问题
- ✅ 需要登录的图片 - 自动读取浏览器Cookie,访问私有图片资源
- ✅ 反爬虫防护 - 模拟真实浏览器请求,绕过反爬虫机制
- ✅ 网络超时问题 - 智能重试机制,提高下载成功率
- ✅ 权限验证 - 支持自定义请求头,处理API接口图片
错误信息:
[RESOURCE ERROR]: certificate verify failed: self-signed certificate
解决方案:程序默认跳过SSL验证,支持自签名证书
错误信息:
[RESOURCE ERROR]: HTTP Error 403: Forbidden
解决方案:自动读取浏览器Cookie,支持需要登录的图片
# 普通使用,自动应用所有增强功能
./markdocx_ubuntu.sh example/test.md
# 程序会自动:
# - 读取浏览器Cookie
# - 跳过SSL验证
# - 模拟真实浏览器请求方法1:使用浏览器登录后转换
- 在浏览器中正常登录需要验证的网站
- 确保图片可以在浏览器中正常显示
- 运行转换命令,程序会自动读取浏览器Cookie
方法2:手动配置请求头
编辑 src/config/image_config.yaml 文件:
# 图片下载配置
use_browser_cookies: true # 使用浏览器Cookie
verify_ssl: false # 跳过SSL验证
timeout: 15 # 超时时间
# 自定义请求头
custom_headers:
User-Agent: "Mozilla/5.0 ..."
Referer: "https://your-site.com"
Authorization: "Bearer your-token"| 功能 | 之前 | 现在 |
|---|---|---|
| SSL证书验证 | ❌ 失败报错 | ✅ 自动跳过验证 |
| 需要登录的图片 | ❌ 403/401错误 | ✅ 自动使用浏览器Cookie |
| 反爬虫网站 | ❌ 被拒绝访问 | ✅ 模拟真实浏览器 |
| 网络超时 | ❌ 直接失败 | ✅ 智能重试 |
| 下载进度 | ❌ 无反馈 | ✅ 显示字节数 |
程序会显示详细的下载信息:
[COOKIES] Loaded cookies from Chrome # Cookie加载状态
[IMAGE] fetching: https://example.com/img.jpg # 开始下载
[SUCCESS] Downloaded 144868 bytes # 下载成功如果遇到问题,会显示具体错误:
[SSL ERROR] certificate verify failed # SSL问题
[NETWORK ERROR] Connection timeout # 网络问题
[FALLBACK] Using urllib with SSL disabled # 使用备用方法- ✅ 企业内网图片(自签名SSL证书)
- ✅ 私有相册图片(需要登录验证)
- ✅ 图床服务(反爬虫保护)
- ✅ API接口图片(需要Authorization)
- ✅ CDN加速图片(需要Referer验证)
Q: 图片还是下载失败怎么办? A: 检查以下几点:
- 确保浏览器中能正常访问图片
- 检查网络连接
- 尝试增加超时时间
- 查看错误信息,可能需要特殊的请求头
Q: 某些私有图片无法下载? A:
- 先在浏览器中登录相关网站
- 确保浏览器Cookie可访问(关闭隐私模式)
- 可能需要手动配置特殊的请求头
| YAML 中的值 | 含义 |
|---|---|
| h1 | 一级标题 |
| h2 | 二级标题 |
| h3 | 三级标题 |
| h4 | 四级标题 |
| normal | 正文 |
完整 YAML 见 src/config/default_style.yaml
h1: # 段落类型名称,可取的值见上表
font:
default: Times New Roman # 西文字体,默认 [Times New Roman]
east-asia: 宋体 # 中文字体,默认 [宋体]
size: 12 # 字体大小,默认 [12],单位:pt
color: "000000" # RGB颜色 16 进制值,必须是字符串,默认 ["000000"] 纯黑色
extra: # 默认不添加这些样式。支持下列样式,有则生效,无则忽略
- bold # 加粗
- italic # 斜体
- underline # 下划线
- strike # 删除线
first-line-indent: 0 # 首行缩进,默认 [0],单位:倍
line-spacing: 1.2 # 行距,默认 [1.2] 单位:倍,表示行距设置为 1.2 倍行高,
space:
before: 0 # 段前空格,默认 [0] pt
after: 0 # 段后空格,默认 [0] pt- 需要 Python 3.0+ 环境
- 安装依赖
pip install -r requirements.txt - 入口文件
markdocx.py - 构建可执行文件
- Windows 下运行
build.bat - Ubuntu/Linux 下运行
./build_ubuntu.sh - macOS 复制
build.bat中的命令到终端执行(待验证)
- Windows 下运行
- 使用 YAML 导入样式参数
- 增强图片下载功能(支持SSL、Cookie、反爬虫)
- Ubuntu/Linux 系统支持
- 支持更多段落类型设置
- 提供 GUI
- 提供 macOS 版本。目前我只有 Windows 设备,欢迎参与贡献:)
- 普通段落
- 一到四级标题,保留大纲导航
- 本地图片、网络图片、图片标题
- 有序列表、无序列表、TODO List
- 引用块
- 表格
- 超链接
- 分割线,在 Word 中表现为分页符
- 加粗、斜体、下划线
- 行内代码
- 上标、下标
- 高亮文本
- 代码块样式优化(或转换为图片)
- LaTeX
- 脚注