news 2026/8/22 13:44:40

rst2pdf命令行选项全解:20+个参数助你高效生成PDF

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
rst2pdf命令行选项全解:20+个参数助你高效生成PDF

rst2pdf命令行选项全解:20+个参数助你高效生成PDF

【免费下载链接】rst2pdfUse a text editor. Make a PDF.项目地址: https://gitcode.com/gh_mirrors/rs/rst2pdf

rst2pdf 是一款开源的 PDF 生成工具,口号就是「Use a text editor. Make a PDF.」——它让你用纯文本编辑器写 reStructuredText(RST)文档,然后直接生成排版精美的 PDF,完全绕开 LaTeX 的复杂流程。

本文带你一次性看懂rst2pdf 命令行选项:从最常用的输出、样式表参数,到页眉页脚、分页控制、图片与字体等高级选项,全部 40 个参数分类拆解。读完这篇 rst2pdf 使用教程,你就能熟练组合参数,生成专业级 PDF 文档。


快速上手:一条命令生成PDF

安装后,生成 PDF 只需一条命令:

$ rst2pdf 文档名.rst 输出.pdf

例如把项目里的测试文档转换为 PDF:

$ rst2pdf tests/input/source.rst output.pdf

不确定有哪些选项?随时用-h查看帮助。所有命令行参数都在源码 rst2pdf/createpdf.py 的parse_commandline()函数中定义。

💡 上面这张图正是测试用例tests/input/test_background.yaml中通过background属性指定的页面背景,说明 rst2pdf 支持整页背景图片排版。


输出与配置:最核心的4个参数

参数作用
文件名.rst 输出.pdf位置参数:输入文档与输出路径(可省略输出,默认写 stdout)
-o, --output FILE指定 PDF 输出文件(不能与第二个位置参数同时使用)
--config FILE指定配置文件,默认~/.rst2pdf/config,可批量预设参数默认值
-s, --stylesheets FILE加载自定义样式表(YAML),可多次使用,逗号分隔

典型组合:

$ rst2pdf -o book.pdf -s rst2pdf/styles/dejavu.yaml 文档.rst

项目自带 70 多套内置样式表,位于 rst2pdf/styles/ 目录,包括 A4/A5/letter 页面尺寸、dejavu字体方案、solarized-dark代码高亮主题等,按需引用即可。


样式与字体:让PDF排版更专业

参数作用
--stylesheet-path DIR添加样式表搜索路径
--font-path DIR添加字体搜索路径(支持 TTF 和 Type1 字体嵌入)
--print-stylesheet打印默认样式表并退出(查看内置样式的神器)
-l, --language LANG设置连字符与 docutils 本地化语言,默认en_US
--smart-quotes VALUE将 ASCII 引号、省略号、破折号转换为排版正确的形式

想看看 rst2pdf 到底内置了哪些样式属性?一条命令全部导出:

$ rst2pdf --print-stylesheet > default.yaml

导出的内容即 rst2pdf/styles/styles.yaml 定义的完整默认样式,可作为你自定义样式表的起点。


页眉页脚与分页控制:出版级排版技巧

参数作用
--header HEADER文档未指定时的默认页眉(支持###Page######Section###占位符)
--footer FOOTER文档未指定时的默认页脚
--section-header-depth N页眉页脚中章节标题替换###Section###的最大深度,默认 2
-b, --break-level LEVEL多少级及更高层级的章节自动从新页开始,默认 0
--break-side VALUE章节起始页控制:even/odd/any
--first-page-on-right双面书籍样式,正文第一页从右侧开始
--blank-first-page在文档开头插入一个空白页

书籍风格示例:让每个一级章节都从新的一页开始,页脚显示页码:

$ rst2pdf -b 1 --footer "第 ###Page### 页" 文档.rst

上图来自示例文档 doc/montecristo/montecristo.rst,它正是用.. header::.. footer::指令配合###Section######Page###占位符实现的页眉页脚效果。


图片与内容处理:DPI、脚注、表格

参数作用
--default-dpi NUMBER像素尺寸对象的 DPI,默认 300,直接影响插图大小
--fit-background-mode MODE背景图适配方式:scale/scale_width/center
--fit-literal-mode MODE代码块超宽时的处理:error/overflow/shrink/truncate,默认shrink
--real-footnotes脚注显示在定义处的页面底部
--inline-footnotes脚注以行内方式显示
--no-footnote-backlinks禁用脚注回链
--repeat-table-rows跨页表格时重复表头行
--inline-links链接以括号显示目标而非可点击链接
--baseurl URL相对 URL 的基准地址,默认当前目录

测试套件中大量使用大尺寸图片(如本图 1333x2000)验证--default-dpi的缩放行为:同一张图片,DPI 设为 300 和 100 时,PDF 中的物理尺寸会相差三倍。


调试与进阶:排查问题的秘密武器

参数作用
-v, --verbose打印调试信息
--very-verbose打印更详细的调试信息
-q, --quiet减少输出信息
--version打印版本号并退出
--show-frame-boundary显示页面分栏边框(调试布局必备)
-e, --extension-module FILE加载 Python 扩展模块,可自定义指令与角色
--record-dependencies FILE将输出文件依赖关系写入指定文件
--strip-elements-with-class CLASS从输出中移除指定 class 的元素,可多次使用
--raw-html支持嵌入原始 HTML
--custom-cover FILE指定封面模板文件,默认cover.tmpl
--use-floating-images:align:属性的图片表现更接近 rst2html
--use-numbered-links章节编号时,链接文字中也带上编号
--date-invariant不在 PDF 中写入当前日期(保证输出可复现)

实战:调试布局问题

当排版不符合预期时,先打开分栏边框看看内容落在了哪里:

$ rst2pdf -v --show-frame-boundary 文档.rst

项目内置的扩展模块示例位于 rst2pdf/extensions/ 目录,可直接用-e参数加载。


常用场景速查清单

  • 最小可用命令rst2pdf 文档.rst 输出.pdf
  • 压缩文件rst2pdf -c 文档.rst
  • 换字体主题rst2pdf -s rst2pdf/styles/serif.yaml 文档.rst
  • 书籍排版rst2pdf -b 1 --break-side odd --first-page-on-right 文档.rst
  • 打印就绪rst2pdf --smart-quotes 1 --repeat-table-rows --fit-literal-mode shrink 文档.rst
  • 代码库依赖追踪rst2pdf --record-dependencies deps.txt 文档.rst
  • 固定输出(CI 场景)rst2pdf --date-invariant 文档.rst

常见问题 FAQ

Q1:参数太多记不住怎么办?A:把常用参数写入~/.rst2pdf/config配置文件(用--config指定其他位置),命令行只传临时参数即可。

Q2:代码块超宽导致报错?A:--fit-literal-mode的默认值shrink会自动缩字号;改成overflow则直接溢出显示。

Q3:想确认当前生效的完整默认样式?A:运行rst2pdf --print-stylesheet,它会将 rst2pdf/styles/styles.yaml 打印到终端。

Q4:如何嵌入中文字体?A:将 TTF 字体放入某目录,然后用--font-path指定该目录,再在样式表中通过fontsAlias映射即可(参见 rst2pdf/styles/dejavu.yaml 的写法)。


掌握这 40 个 rst2pdf 命令行参数,你就不再需要复杂工具链——打开文本编辑器,敲下rst2pdf,专业 PDF 即刻生成 🚀

【免费下载链接】rst2pdfUse a text editor. Make a PDF.项目地址: https://gitcode.com/gh_mirrors/rs/rst2pdf

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 13:43:56

BoringSSL 是什么?一个比你想的更精简的轻量级 SSL/TLS 加密库

BoringSSL 是什么?一个比你想的更精简的轻量级 SSL/TLS 加密库 【免费下载链接】boringssl Mirror of BoringSSL 项目地址: https://gitcode.com/gh_mirrors/bo/boringssl BoringSSL 这个名字听起来与它的实力相反。这个由 Google 维护的轻量级 SSL/TLS 加密…

作者头像 李华
网站建设 2026/8/22 13:42:14

铜钟音乐使用指南:免费听歌、本地收藏,5 步快速上手

铜钟音乐使用指南:免费听歌、本地收藏,5 步快速上手 【免费下载链接】tonzhon-music 铜钟「Tonzhon」: 干净纯粹的音乐平台 (铜钟已不再使用原来的 tonzhon.com,现在的 tonzhon.com 不是正版的铜钟) 项目地址: https://gitcode.com/GitHub_…

作者头像 李华
网站建设 2026/8/22 13:40:03

Three.js 完全解析:构建 Web 3D 世界的强大工具

Three.js 是 Web 端 3D 开发领域的事实标准。如果说直接使用 WebGL 像是在手动绘制每一帧画面,那么 Three.js 就是为我们提供了一套强大的“游戏引擎”。它将复杂的底层图形学逻辑,封装成了直观的“场景”(Scene)、“相机”(Camera)、“灯光”(Light)和“物体”(Mesh)…

作者头像 李华