# MarkdownManager
**Repository Path**: birdman1992/markdown
## Basic Information
- **Project Name**: MarkdownManager
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2025-10-28
- **Last Updated**: 2026-07-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Pandoc, markdown转pdf
## README
# Markdown文档格式转换工具
这个项目提供了一套完整的解决方案,用于将Markdown文档自动转换为HTML、Word和PDF格式,特别针对中文文档进行了优化。系统还提供了自动霄镜式SVG嚾片处理,克服了不修改输入文件的难题。
## 功能特点
- **一键转换所有文件**:自动扫描`input/`目录中的所有Markdown文件
- **多格式输出**:支持HTML、Word(.docx)和PDF格式输出
- **中Brush支持**:完美支持中文显示,包括中文字体配置
- **SVG嚾片自动化**:自动转换SVG为PDF,无需修改输入文件
- **样式定制**:提供CSS、Word模板咏LaTeX模板来自定义输出样式
- **表格样式**:专门的Lua过滤器用于美PDF中的表格样式
- **自动化脚本**:一键运行的批处理脚本,简化转换流程
## 文件结构
```
project/
├── Convert-All.ps1 # 主转换脚本(所有格式)
├── Convert-ToHtml.ps1 # HTML 转换脚本
├── Convert-ToWord.ps1 # Word 转换脚本
├── Convert-ToPdf.ps1 # PDF 转换脚本
├── ConvertCommon.psm1 # 共享 PowerShell 模块
├── convert_svg_to_pdf.py # SVG 转 PDF 工具
├── merge_cover.py # Word 封面/声明页/尾页合并工具
├── merge_pdf.py # PDF 封面/声明页/尾页合并工具
├── resources/ # 模板和样式资源
│ ├── pdf_template.latex # PDF LaTeX 模板
│ ├── style.css # HTML 样式
│ ├── example.docx # Word 参考文档
│ └── table_filter.lua # 表格样式过滤器
├── filters/ # Pandoc Lua 过滤器
│ ├── svg_to_pdf.lua # SVG→PDF 过滤器
│ └── word_size_control.lua # Word 大小控制过滤器
├── vendor/ # 离线依赖
│ ├── pypdf2/ # PyPDF2 库(支持 Python 3.8/3.11/3.12)
│ └── powershell-yaml/ # PowerShell YAML 解析模块
├── docs/ # 文档
│ ├── README.md # 文档导航
│ ├── getting-started.md # 快速入门
│ ├── user-guide.md # 用户指南
│ ├── advanced-features.md # 高级特性
│ ├── troubleshooting.md # 故障排查
│ ├── changelog.md # 版本历史
│ └── development.md # 开发者文档
├── README.md # 项目主文档
├── CHANGELOG.md # 版本历史
└── ...
```
**工作空间目录**(自动创建):
```
%USERPROFILE%\MarkdownConverterWorkspace\
├── config.docx # 文档模板(封面、声明页、尾页)
├── config.yaml # 样式配置文件
├── config.pdf # 模板 PDF(自动从 config.docx 生成)
├── input/ # 输入 Markdown 文件
│ ├── example.md # 转换示例文档(包含所有已支持的语法元素)
│ └── images/ # 图片文件(SVG、PNG 等)
└── output/ # 输出文件(HTML、Word、PDF)
```
`input/example.md` 是转换功能的参考示例,涵盖了当前支持的所有 Markdown 语法元素(标题、文本样式、列表、表格、代码块、图片、公式、交叉引用等)。如需支持新的内容格式,请联系开发者。
## 环境要求
1. **Pandoc**:文档转换工具
2. **LaTeX发行版**(可选):用于生成PDF文档(推荐使用MiKTeX或TeX Live)
3. **Python 3.8+**:用于 SVG 转换、封面合并等辅助功能
4. **WPS Office / Microsoft Word / LibreOffice**(可选):用于将 config.docx 转换为 PDF 模板,生成高保真封面页
## 使用方法
### 快速开始
将 Markdown 文件放置于工作空间的 `input/` 目录中,然后运行 PowerShell 脚本:
```powershell
# 转换所有格式(HTML、Word、PDF)
.\Convert-All.ps1
# 或仅转换特定格式
.\Convert-ToHtml.ps1
.\Convert-ToWord.ps1
.\Convert-ToPdf.ps1
```
转换后的文件将保存在 `output` 目录中。
### 详细文档
详细的使用教程、常见问题和高级功能,请参考:
- **[快速入门指南](docs/getting-started.md)** - 环境配置和基本使用
- **[用户指南](docs/user-guide.md)** - 详细的功能说明
- **[高级特性](docs/advanced-features.md)** - 交叉引用、样式定制等
- **[故障排查](docs/troubleshooting.md)** - 常见问题解决方案
- **[开发者文档](docs/development.md)** - 项目架构和开发指南
## 文档模板(config.docx)
工作空间中的 `config.docx` 是文档模板文件,用于为 Word 和 PDF 输出提供统一的封面、声明页和尾页。
### 模板结构
`config.docx` 应包含以下页面,按顺序排列:
| 页面 | 说明 |
|------|------|
| 封面页 | 产品/项目封面,包含标题、版本号、公司信息等 |
| 声明页 | 版权声明、版本记录等 |
| 目录页 | 目录占位(转换时会自动生成实际目录) |
| 尾页 | 公司联系方式、地址等信息 |
### 工作原理
**Word 输出**:`merge_cover.py` 直接从 `config.docx` 的 XML 结构中提取封面、声明页和尾页,合并到 Pandoc 生成的 Word 文档中。
**PDF 输出**:
1. 通过 WPS Office / Word / LibreOffice 的 COM 自动化将 `config.docx` 转换为 `config.pdf`
2. `merge_pdf.py` 从 `config.pdf` 中提取第 1 页(封面)、第 2 页(声明)和目录之后的首页(尾页)
3. 将提取的页面与 Pandoc 生成的内容 PDF 合并,最终顺序为:封面 → 声明 → 正文内容 → 尾页
### 缓存机制
`config.pdf` 会缓存在工作空间目录中。当 `config.docx` 被修改后,下次运行转换脚本时会自动重新生成 `config.pdf`。
### 注意事项
- 如果未放置 `config.docx`,转换脚本会跳过封面合并,仅输出正文内容
- PDF 封面合并需要系统安装 WPS Office、Microsoft Word 或 LibreOffice 中的任意一个
- Word 封面合并仅依赖 Python,无需额外办公软件
## Markdown语法标准
为了确保文档的一致性和可转换性,建议采用统一的Markdown语法标准:
### 基础语法标准
- 采用 **[GitHub Flavored Markdown (GFM)](https://github.github.com/gfm/)** 作为主要编写标准
- 遵循 **[CommonMark规范](https://spec.commonmark.org/)**,确保语法的明确性和无歧义性
- 使用 **[Pandoc Markdown扩展](https://pandoc.org/MANUAL.html#pandocs-markdown)**,支持更多格式化选项
### Pandoc Markdown扩展
Pandoc在标准Markdown基础上提供了丰富的扩展功能,包括但不限于:
- **表格**:支持多种表格语法,包括简单的表格和复杂的表格
- **脚注**:使用`[^1]`语法添加脚注引用,使用`[^1]: 脚注内容`定义脚注
- **定义列表**:支持定义列表语法,用于术语解释
- **任务列表**:支持GitHub风格的任务列表
- **删除线**:使用`~~删除线文本~~`语法
- **上标和下标**:使用`^上标^`和`~下标~`语法
- **数学公式**:支持LaTeX数学公式语法
- **引文**:支持引文和参考文献格式
- **交叉引用**:支持表格、公式、图片等元素的交叉引用
### 标准化建议
具体实施过程中,建议可以给出一个[示例](docs/sample_document.md),列举markdown中所支持的元素,从开发的角度来看,
markdown语法是比较简单清晰,有一个示例的话,是易于上手的。
### 交叉引用
项目支持表格、公式和图片的交叉引用功能:
- **表格引用**:使用 `Table: 表格标题 {#tbl:label}` 语法定义带标签的表格,使用 `见表 @tbl:label` 进行引用
- **公式引用**:在公式内使用 `\label{eq:label}` 定义标签,使用 `见式 @eq:label` 进行引用
- **图片引用**:使用 `{#fig:label}` 语法定义带标签的图片,使用 `见图 @fig:label` 进行引用
详细使用方法请参考[交叉引用使用指南](docs/cross_reference_guide.md)。
## 推荐编辑工具
为了提高Markdown文档编写效率,推荐使用以下编辑器:
### 技术团队推荐
**VS Code + Markdown插件**
可以使用插件:Markdown Image,Markdown Table,Markdown All in One
- 免费且功能强大
- 丰富的插件生态系统
- 支持实时预览和语法高亮
- 与Git集成良好,适合团队协作
- 图片可以粘贴引入
- 表格可以从TSV格式化生成
- 内网开发环境也是vscode,开发人员写markdown会比较方便
**Typora**
- 所见即所得的Markdown编辑体验
- 界面简洁美观
- 支持多种导出格式
- 适合专注写作
- 不用太多关注markdown语法
- 付费软件
**Obsidian**
- 专注于知识管理
- 强大的双向链接功能
- 适合构建个人知识库
### 企业环境推荐
- **Confluence**:企业级协作平台
- **Notion**:多功能笔记和项目管理工具
- **Web IDE**:基于浏览器的集成开发环境
这些方案多用于协作编辑。
## 表格样式定制
项目包含一个Lua过滤器(`docs/table_filter.lua`),用于自定义PDF中的表格样式:
- 表头背景色:#508AC8,文字颜色白色
- 内容格子背景色:无色(透明)
- 表格行高:1.2cm
- 表格边框:完整边框
- 文字对齐:水平和垂直居中
## 许可证
本项目为开源项目,可根据需要自由使用和修改。