Markdown 常用于编写技术文档、项目说明和工作笔记。它通过简洁的标记组织标题、段落和列表,便于编辑与版本管理;但在打印、归档或对外交付时,通常需要转换为具有固定分页和页面布局的 PDF。
本文使用 Spire.Doc for Python,介绍两种处理方式:直接将 Markdown 文件转换为 PDF,以及在转换前设置纸张大小、页面方向和页边距。
Spire.Doc for Python 是用于读取、创建和转换文档的 Python 类库。本文通过它加载 Markdown 文件,并将文档导出为 PDF。
在终端中执行以下命令:
pip install Spire.Doc准备一个名为 Sample.md 的文件,保存到 Python 脚本的工作目录。可以使用下面的内容进行测试:
# 文档转换项目周报
> 报告周期:2026 年 11 月 2 日至 11 月 6 日
> 负责人:张明
> 文档状态:待审核
## 一、项目概述
本项目用于将团队维护的 **Markdown 文档转换为 PDF**,便于打印、归档和对外交付。
本周重点验证了以下内容:
- 标题、段落与列表的排版
- **加粗文字**与*斜体文字*的显示
- 超链接、表格和代码块的转换
- A4 纸张、页面方向与页边距设置
Markdown 语法可参考 [Markdown Guide](https://www.markdownguide.org/basic-syntax/),生成的 PDF 文件统一提交至[项目文档中心](https://example.com/documents)。
## 二、本周任务进展
| 任务编号 | 任务名称 | 负责人 | 状态 | 完成比例 |
| --- | --- | --- | --- | --- |
| DOC-101 | 整理产品使用说明 | 张明 | 已完成 | 100% |
| DOC-102 | 编写转换脚本 | 李华 | 已完成 | 100% |
| DOC-103 | 验证中文排版 | 王芳 | 进行中 | 80% |
| DOC-104 | 检查表格与代码块 | 赵磊 | 进行中 | 60% |
| DOC-105 | 审核交付文档 | 陈晨 | 未开始 | 0% |
......建议将 Markdown 文件保存为 UTF-8 编码。下面的示例会自动创建 output 文件夹,用于存放生成的 PDF。
如果没有特定的纸张和页边距要求,可以直接加载 Markdown 文件,再以 PDF 格式保存。
完整代码如下:
from pathlib import Path
from spire.doc import *
from spire.doc.common import *
# 创建输出文件夹
Path("output").mkdir(parents=True, exist_ok=True)
# 创建文档对象
doc = Document()
# 加载 Markdown 文件
doc.LoadFromFile("Sample.md", FileFormat.Markdown)
# 保存为 PDF 文件
doc.SaveToFile("output/MarkdownToPDF.pdf", FileFormat.PDF)
# 释放文档资源
doc.Dispose()转换过程主要涉及两个方法:
方法 | 作用 |
|---|---|
LoadFromFile("Sample.md", FileFormat.Markdown) | 按 Markdown 格式加载源文件 |
SaveToFile("output/MarkdownToPDF.pdf", FileFormat.PDF) | 将加载后的文档导出为 PDF |
这里的转换并不是把 Markdown 源码作为普通文本写入 PDF,而是先解析其中的文档结构,再生成排版后的页面。例如,源文件中的标题、列表和强调标记会参与文档排版。
运行脚本后,可以在 output 文件夹中找到 MarkdownToPDF.pdf。

Markdown 主要描述内容结构,通常不会在源文件中指定 A4 纸张、横向页面或打印页边距。需要控制这些参数时,可以在加载文件后、导出 PDF 前修改文档的 PageSetup。
下面的示例将页面设置为 A4、横向,四周页边距均为 50 磅:
from pathlib import Path
from spire.doc import *
from spire.doc.common import *
# 创建输出文件夹
Path("output").mkdir(parents=True, exist_ok=True)
# 创建文档对象
doc = Document()
# 加载 Markdown 文件
doc.LoadFromFile("Sample.md", FileFormat.Markdown)
# 获取文档的第一个节
section = doc.Sections.get_Item(0)
# 获取页面设置
page_setup = section.PageSetup
# 设置纸张大小、页面方向和页边距
page_setup.PageSize = PageSize.A4()
page_setup.Orientation = PageOrientation.Landscape
page_setup.Margins.All = 50
# 保存为 PDF 文件
doc.SaveToFile("output/MarkdownToPDFPageSetup.pdf", FileFormat.PDF)
# 释放文档资源
doc.Dispose()与基础转换相比,这段代码增加了获取文档节和设置页面布局的操作。各项设置的含义如下:
设置 | 示例值 | 含义 |
|---|---|---|
PageSize | PageSize.A4() | 使用 A4 纸张 |
Orientation | PageOrientation.Landscape | 使用横向页面 |
Margins.All | 50 | 统一设置上、下、左、右页边距 |
页边距的单位是磅(pt),不是毫米。 1 英寸等于 72 磅,因此 50 磅约为 17.64 毫米。如果需要使用 20 毫米页边距,可以将其换算为磅:
page_setup.Margins.All = 20 * 72 / 25.4页面设置会影响内容的可用宽度和分页结果。横向页面可提供更大的横向排版空间,适合包含较宽内容的文档;普通说明文档则可以根据打印需求选择纵向布局。
需要注意的是,doc.Sections.get_Item(0) 获取的是文档的第一个节,并不是第一页。页面设置作用于该节内的页面。如果处理的文档包含多个节,并且希望统一布局,需要对各个节分别设置。
完成导出后,建议重点检查以下几项:
页面设置控制的是纸张与内容区域,无法代替对具体内容排版的检查。尤其是在批量转换前,先用一份有代表性的文件确认效果,更容易发现字体、资源路径和分页问题。
使用 Spire.Doc for Python 将 Markdown 转换为 PDF,基本流程是创建文档对象、加载 Markdown、导出 PDF,最后释放资源。需要控制打印布局时,可以在导出前通过 PageSetup 设置纸张大小、页面方向与页边距。
对于普通笔记和说明文档,基础转换即可作为起点;对于需要打印或统一交付格式的材料,则可以在同一流程中加入页面设置,并检查最终分页效果。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。