# md2pdf-project **Repository Path**: aylerh/md2pdf-project ## Basic Information - **Project Name**: md2pdf-project - **Description**: Markdown 转 PDF 系统(包含 LaTeX 支持、图片嵌入、前后端分离):(1)后端位于backend;(2)前端位于frontend; - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-15 - **Last Updated**: 2026-03-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 压缩包 Markdown 在线转换 PDF 系统 这是一个基于 Docker 构建的高性能工具,支持将包含 Markdown 文件及其关联图片、LaTeX 公式的压缩包(ZIP)一键转换为 PDF。系统采用前后端分离架构,后端基于 FastAPI 和 **Playwright (Chromium)** 实现,相比传统方案提速 5-10 倍。 ## 核心功能 - **极速转换**:改用 Playwright 浏览器内核渲染,单次转换仅需 1-2 秒。 - **ZIP 转换**:支持通过网络链接(URL)或本地文件上传进行转换。 - **图片嵌入**:自动识别 ZIP 包内的图片路径并将其嵌入 PDF,无需外部资源。 - **LaTeX 支持**:支持数学公式(`$ ... $` 格式),自动转换为 MathML 进行高质量渲染。 - **中文字体**:内置 `fonts-noto-cjk`,完美支持中日韩文字,无乱码。 - **前后端分离**:前端提供接口动态配置功能,适应不同部署环境。 - **自动化清理**:转换完成后自动清理服务器临时文件,保持系统整洁。 ## 缺点 镜像有点大:ayler/md2pdf-backend 【2.84G】 ## 快速开始 ### 1. 运行项目 在项目根目录下执行以下命令: ```bash docker-compose up --build ``` ### 2. 访问应用 - **前端页面**:[http://localhost:8080](http://localhost:8080) - **后端接口**:[http://localhost:8000](http://localhost:8000) ### 3. 使用说明 1. **接口设置**:点击页面顶部的“⚙️ 接口设置”,确认后端地址(默认为 `localhost:8000`)。 2. **选择模式**: - **链接下载**:输入 ZIP 包的公开下载链接。 - **文件上传**:选择本地的 ZIP 压缩包。 3. **开始转换**:点击转换按钮,稍等片刻即可自动下载生成的 PDF。 --- ## 项目结构 ```text . ├── backend/ # FastAPI 后端服务 │ ├── main.py # 核心逻辑:解压、解析、Playwright 渲染 │ ├── Dockerfile # 基于 Playwright 官方镜像,内置 Chromium │ └── requirements.txt ├── frontend/ # Nginx 前端服务 │ ├── index.html # 交互界面 │ └── Dockerfile ├── docs/ # 项目文档与示例 │ └── 改进.md # 优化记录与待办方案 └── docker-compose.yml # 多容器编排配置 ``` ## 技术实现细节 - **Markdown 解析**:使用 `python-markdown`。 - **公式转换**:`latex2mathml` 将 LaTeX 转为 MathML。 - **PDF 引擎**:**Playwright (Chromium)**。通过常驻浏览器实例实现极速渲染,支持现代 CSS 特性。 - **容器优化**:Dockerfile 针对国内网络环境配置了阿里云和清华源镜像加速。 ## 示例资源 - **转换前示例**:`docs/OCR_Results_2files_page_des.zip` - **转换后成果**:`docs/Result_1765784075103.pdf`