# md2pdy **Repository Path**: liYony/md2pdy ## Basic Information - **Project Name**: md2pdy - **Description**: Markdown 转 PDF 工具 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-08 - **Last Updated**: 2025-12-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Markdown to PDF Converter 一个功能强大、界面精美的 Markdown 转 PDF 工具,支持拖拽操作、自定义命名规则和灵活的 Pandoc 参数配置。 ## ✨ 核心特性 ### 🎨 现代化界面 - **优雅设计**: 采用卡片式布局、圆角边框和清新的配色方案 - **拖拽支持**: 直接拖拽 Markdown 文件或文件夹到输入框 - **深色日志**: 专业的控制台风格日志窗口,实时显示转换过程 - **图标按钮**: 所有操作按钮配有直观的 Emoji 图标 - **响应式布局**: 自动适应不同屏幕尺寸 ### 📁 灵活的文件命名 - **自定义规则**: 支持通过 JSON 配置文件定义命名格式 - **时间占位符**: 支持多种时间格式(年、月、日、时、分、秒) - **实时预览**: 界面实时显示生成的文件名预览 - **一键切换**: 可选择使用原文件名或自定义命名 ### ⚙️ 灵活的 Pandoc 配置 - **配置文件**: 通过 `pandoc_args.json` 自定义 Pandoc 转换参数 - **完全可控**: 支持配置选项、参数和变量 - **自动降级**: 配置文件不存在或格式错误时自动使用默认配置 - **实时提示**: 日志窗口显示当前使用的配置状态 ### 🔧 贴心的用户体验 - **智能验证**: 转换前自动验证所有输入和配置 - **设置记忆**: 自动保存上次使用的设置(文件路径、超时时间等) - **状态反馈**: 转换过程中禁用输入,避免误操作 - **详细日志**: 分步显示转换过程,便于排查问题 - **快捷打开**: 转换完成后一键打开输出目录 ## 📝 配置说明 ### 1. 文件命名配置(可选) 创建 JSON 配置文件来自定义输出 PDF 的文件名格式。配置文件使用 Python format 语法,支持以下时间占位符: - `yyyy` - 四位年份(如:2025) - `MM` - 两位月份(如:12) - `dd` - 两位日期(如:08) - `yyyyMMdd` - 完整日期(如:20251208) - `HH` - 两位小时(如:14) - `mm` - 两位分钟(如:30) - `ss` - 两位秒(如:45) #### 配置示例 **项目报告命名** ```json { "format": "[{year}]{project}-{date}", "params": { "year": "yyyy", "project": "项目报告", "date": "yyyyMMdd" } } ``` 生成:`[2025]项目报告-20251208.pdf` **学术论文命名** ```json { "format": "{author}_{title}_{date}", "params": { "author": "张三", "title": "深度学习研究", "date": "yyyyMMdd" } } ``` 生成:`张三_深度学习研究_20251208.pdf` **会议记录命名** ```json { "format": "会议记录_{department}_{year}年{month}月", "params": { "department": "技术部", "year": "yyyy", "month": "MM" } } ``` 生成:`会议记录_技术部_2025年12月.pdf` ### 2. Pandoc 参数配置(可选) 在程序目录下创建 `pandoc_args.json` 文件来自定义 Pandoc 转换参数: ```json { "pandoc_args": { "options": ["-s", "--toc", "--listings"], "arguments": { "--from": "markdown", "--template": "eisvogel", "--pdf-engine": "xelatex" }, "variables": { "CJKmainfont": "微软雅黑" } } } ``` **配置说明:** - `options`: 不带值的选项参数(如 `-s`、`--toc`) - `arguments`: 带值的参数(如 `--from markdown`) - `variables`: Pandoc 变量(如 `-V CJKmainfont=微软雅黑`) **常用配置项:** - `CJKmainfont`: 中文字体(如:微软雅黑、宋体、黑体) - `--toc`: 生成目录 - `--listings`: 代码高亮 - `--template`: LaTeX 模板 - `--pdf-engine`: PDF 引擎(xelatex、pdflatex 等) **注意:** 如果配置文件不存在或格式错误,程序会自动使用内置的默认配置。 ## 🚀 使用指南 ### 快速开始 1. **选择输入文件** - 点击"📂 浏览"按钮选择 Markdown 文件 - 或直接拖拽 `.md` 文件到输入框 2. **选择输出目录** - 点击"📂 浏览"按钮选择保存位置 - 或拖拽文件夹到输入框 - 默认保存在输入文件所在目录 3. **配置命名规则**(可选) - 勾选"启用自定义命名" - 点击"⚙️ 选择配置"加载命名规则 JSON 文件 - 查看预览确认文件名格式 4. **调整转换设置**(可选) - 设置超时时间(首次运行建议 300 秒以上) - 首次转换时 MiKTeX 会自动下载必需的宏包 5. **开始转换** - 点击"▶ 开始转换"按钮 - 查看日志窗口了解转换进度 - 等待转换完成 6. **查看结果** - 转换成功后点击"📂 打开输出目录" - 或直接在输出目录中找到生成的 PDF 文件 ### 高级技巧 - **拖拽操作**: 支持拖拽 Markdown 文件或文件夹到对应输入框 - **设置持久化**: 程序会记住上次使用的路径和配置 - **多场景配置**: 创建多个命名配置文件,根据需要快速切换 - **自定义字体**: 修改 `pandoc_args.json` 中的 `CJKmainfont` 设置中文字体 ## 📦 环境要求 ### 必需组件 - **Python 3.7+**: 运行主程序 - **MiKTeX**: LaTeX 排版系统([下载地址](https://miktex.org/download)) - 安装后需添加到系统环境变量 - 首次运行会自动下载所需宏包 ### Python 依赖 ```bash pip install PyQt5 ``` ### 内置组件(无需额外安装) - **Pandoc 3.8.3**: 已集成在 `resources/pandoc-3.8.3/` 目录 - **Eisvogel 3.3.0**: 精美的 LaTeX 模板,已集成在 `resources/Eisvogel-3.3.0/` 目录 ## 📁 文件结构 ``` md2pdf/ ├── md2pdf_converter.py # 主程序 ├── requirements.txt # Python 依赖列表 ├── pandoc_args.json # Pandoc 参数配置(可选) ├── app_settings.json # 程序设置(自动生成) ├── README.md # 本文档 ├── resources/ # 资源目录 │ ├── pandoc-3.8.3/ # Pandoc 程序 │ └── Eisvogel-3.3.0/ # LaTeX 模板 └── [自定义命名配置].json # 命名规则配置(可选) ``` ## 🔧 技术栈 - **Python 3.x**: 主要编程语言 - **PyQt5**: 现代化 GUI 框架 - **Pandoc 3.8.3**: 强大的文档转换引擎 - **MiKTeX**: 完整的 LaTeX 发行版 - **Eisvogel 3.3.0**: 专业的 LaTeX 模板 - **XeLaTeX**: PDF 引擎,支持中文 ## 💡 常见问题 ### 转换失败? 1. 检查是否已安装 MiKTeX 并添加到环境变量 2. 首次转换增加超时时间(建议 300 秒以上) 3. 查看日志窗口了解详细错误信息 ### 中文显示异常? 1. 检查 `pandoc_args.json` 中的 `CJKmainfont` 设置 2. 确保系统已安装指定的中文字体 3. 可选字体:微软雅黑、宋体、黑体、楷体等 ### 配置文件不生效? 1. 确保 JSON 格式正确(可使用 JSON 验证工具) 2. 查看日志窗口的配置加载提示 3. `pandoc_args.json` 必须在程序目录下 ### 首次转换很慢? 首次运行时 MiKTeX 需要下载必需的宏包,这是正常现象。建议: - 保持网络连接畅通 - 增加超时时间设置 - 后续转换会快很多 ## 🎯 最佳实践 1. **首次使用**: - 用简单的 Markdown 文件测试 - 设置较长的超时时间 - 确保网络连接正常 2. **批量转换**: - 创建多个命名配置文件 - 使用有意义的配置文件名 - 转换前预览文件名 3. **自定义样式**: - 修改 `pandoc_args.json` 调整转换参数 - 修改 Eisvogel 模板文件(高级用户) - 参考 Pandoc 和 LaTeX 文档 ## 📄 许可证 本项目仅供学习和个人使用。 ## 🤝 贡献 欢迎提出问题和建议! --- **开发时间**: 2025年12月 **版本**: 1.0.0