根据 Markdown 标题结构自动为 PDF 添加书签的 Docker 工具。
PdfBookmarkMakerDocker/
├── make_bookmarks.py # 核心 Python 脚本
├── Dockerfile # Docker 镜像配置
├── entrypoint.sh # Docker 入口脚本
└── README.md # 项目文档
如果不想自行构建,可以直接从 Docker Hub 拉取预构建的镜像:
# 拉取最新版本
docker pull xeden3/pdfbookmarkmaker:v1.0
然后直接运行(无需构建):
docker run --rm \
-v ./:/input \
-v ./output:/output \
xeden3/pdfbookmarkmaker:v1.0
如果需要自定义或修改代码,可以从源码构建:
docker build -t xeden3/pdfbookmarkmaker:v1.1 .
在当前目录准备以下文件:
当前目录/
├── input/ # 输入目录
│ ├── document.pdf # PDF 文件
│ └── document.md # 对应的 Markdown 文件
└── output/ # 输出目录(会自动创建)
docker run --rm \
-v ./:/input \
-v ./output:/output \
xeden3/pdfbookmarkmaker:v1.1
处理当前目录下所有 PDF 文件:
docker run --rm \
-v ./:/input \
-v ./output:/output \
xeden3/pdfbookmarkmaker:v1.0
使用 -e TITLE 环境变量添加标题页:
docker run --rm \
-e TITLE="<b>文档标题</b><br/><font size=16 color=grey>副标题</font>" \
-v ./:/input \
-v ./output:/output \
xeden3/pdfbookmarkmaker:v1.1
标题页支持以下 HTML 标签:
<b> - 粗体<i> - 斜体<font size=xx> - 字体大小<font color=xxx> - 字体颜色<br/> - 换行使用环境变量指定单个 MD 和 PDF 文件进行转换:
docker run --rm \
-e INPUT_MD_FILE="/input/document.md" \
-e INPUT_PDF_FILE="/input/document.pdf" \
-e OUTPUT_PDF_FILE="/output/result.pdf" \
-e TITLE="<b>文档标题ABC</b><br/><font size=16 color=grey>副标题</font>" \
-v ./:/input \
-v ./output:/output \
xeden3/pdfbookmarkmaker:v1.0
参数说明:
INPUT_MD_FILE - MD 文件路径(必需)INPUT_PDF_FILE - PDF 文件路径(必需)OUTPUT_PDF_FILE - 输出 PDF 路径(可选,默认在输出目录生成 {原文件名}_bookmarked.pdf)TITLE - 标题页文本(可选)工具会自动识别以下格式的标题:
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
假设 document.md 内容如下:
# 第一章 概述
这是第一章的内容...
## 1.1 背景介绍
本节介绍背景...
### 1.1.1 研究现状
本节讨论研究现状...
生成的书签将保持原有层级结构。
| 变量名 | 说明 | 示例 |
|---|---|---|
INPUT_DIR | 输入目录路径 | /input(默认) |
OUTPUT_DIR | 输出目录路径 | /output(默认) |
TITLE | 标题页文本(支持 HTML) | <b>标题</b> |
工具使用 4 级匹配策略查找 PDF 中的标题位置:
工具自动处理以下文本差异:
**、*、Emoji 等)运行成功后会显示处理进度:
========================================
PdfBookmarkMaker Docker
========================================
处理: document
PDF: /input/document.pdf
MD: /input/document.md
OUT: /output/document_bookmarked.pdf
[1/5] 解析 MD 标题: document.md
找到 15 个标题
[2/5] 在 PDF 中定位页码: document.pdf
成功匹配 14/15 个标题
[3/5] 构建输出 PDF
[4/5] 添加书签(层级结构)
L1 P1: 第一章 概述
L2 P3: 1.1 背景介绍
L3 P5: 1.1.1 研究现状
...
[5/5] 输出: /output/document_bookmarked.pdf
完成
========================================
完成: 处理 1 个文件
输出目录: /output
========================================
MIT License
Content type
Image
Digest
sha256:e24ec19dd…
Size
73.8 MB
Last updated
4 months ago
docker pull xeden3/pdfbookmarkmaker:v1.0