【笔记】为PDF创建目录

前言

通过Krasjet/pdf.tocgen实现为PDF创建目录

下载依赖

1
pip3 install -U pdf.tocgen

举例

1
2
3
4
# 一级标题1在第1页
## 二级标题1在第2页
# 一级标题2在第3页
## 二级标题2在第4页

匹配标题层级并生成配置

  • 根据关键词获取每一级标题的匹配配置

内容为<string><level_number>级标题在<file_name>.pdf文件的第<page_number>

1
pdfxmeta -p <page_number> -a <level_number> <file_name>.pdf "<string>"
  • 如果只匹配到一组配置,那就将这一组配置输出为文件
  • 如果匹配到多组配置,那就说明匹配的关键词重复出现,应当仅保留一个
  • 从1级标题开始,依次匹配所有层级的标题,最后都输出到同一个文件
1
2
pdfxmeta -p 1 -a 1 <file_name>.pdf "一级标题1在第1页" >> recipe.toml
pdfxmeta -p 2 -a 2 <file_name>.pdf "二级标题1在第2页" >> recipe.toml
  • 生成的recipe.toml文件即为标题层级匹配配置文件

生成toc文件

  • 检测匹配配置是否正确

可以在每次匹配之后都可以进行一次检测
如果某一次匹配存在多组配置,就一定要依次检测一下哪个配置为正确的配置

1
pdftocgen <file_name>.pdf < recipe.toml
  • 检测无误后生成toc文件
1
pdftocgen <file_name>.pdf < recipe.toml > toc.txt
1
2
3
4
"一级标题1" 1
"二级标题1" 2
"一级标题2" 3
"二级标题2" 4
  • 如果不是通过

将toc文件与原pdf文件合并为新pdf文件

-t toc.txt:指定toc文件
-o <file_name_new>.pdf:指定合并后的新的pdf文件路径
<file_name_old>.pdf:指定合并前的旧的pdf文件路径

1
pdftocio -t toc.txt -o <file_name_new>.pdf <file_name_old>.pdf

完成

参考文献

少数派——Bryan