自动生成PDF的书签目录


前言

网上下载到的一些PDF如果是扫描版一类的,没有书签阅读起来很不方便,而且页码太多不便于手动添加书签,这里提供一个解决办法。

感谢github上大佬提供的工具。
1.@ifnoelse 的 pdf-bookmark
2.@chroming的 pdfdir

使用方法

一、安装

以pdfdir为例,首先在github中找到release版本的软件进行下载
在这里插入图片描述
此软件提供Windows、Ubuntu以及mac,其他平台需自行编译。

下载完成后得到一个
在这里插入图片描述
可以直接打开。

二、使用

详细使用方式可以看github中的说明。
软件界面很简洁
在这里插入图片描述

第一步:输入或者打开资源管理器以找到需要处理的PDF

在这里插入图片描述

第二步:获取该PDF的目录

目录的格式为:章节 名称 页码,由换行符分隔。
因此目录中不要留空行,否则也会为空行添加一个书签,该书签的页码自动对齐上一个有页码的书签。
例如:

中译版序言 1
致中国读者 1
作者来信 1
前言 2
第1章社会心理学导论 3
第一编社会思维 12
第2章社会中的自我 32

结语 605
参考文献 606
… …


有的书可以直接复制该PDF的目录部分

在这里插入图片描述


有的扫描版无法直接复制目录可以去网上找,比如百度或者各书城网站。

在这里插入图片描述


当然找到的目录不一定带页码,也可以使用各PDF阅读器自带的“OCR”功能,将目录部分导出来。
以下是WPS的PDF OCR功能,但是非会员一次只能识别5页,还需要对目录进行分割才能使用。
在这里插入图片描述
这里推荐“万彩办公大师”,它的PDF分割以及OCR识别功能均免费
在这里插入图片描述

在这里插入图片描述
将目录复制下来,以方便随后的处理。


目录中如果有其他字符,可以通过vs code等编辑器的查找替换功能将其删除,若不删除,可能对目录的识别造成影响。

在这里插入图片描述
在这里插入图片描述

建议使用正则表达式,因为vs code的查找替换功能只能替换而不能删除,因此如果是全局找‘_’,替换为空格,则所有下划线的位置都会补上空格,如下图:

在这里插入图片描述

而使用正则,可以将整个下划线部分识别为一次的匹配结果

在这里插入图片描述
可以看到匹配的数量少了许多。

在这里插入图片描述
正则代码:__*
解释:首先匹配下划线‘_’,然后使用’ * ‘匹配前面的子表达式零次或多次,以匹配到大于一次的全为下划线的字符串。
使用空格将所有’_'替换

然后将该目录填入软件
在这里插入图片描述

第三步:目录分层

如果目录分为多级,比如当前示例的PDF,目录为三级,而此软件最大支持的书签也为三级,刚好够用。
使用方式:参考github说明:

\d 表示单个数字,如 “第\d章” 可以匹配 “第1章”, “第2章”……等,但不能匹配"第10章", 因为10是两个数字;
\w 表示单个字符,包括单个数字。如 “第\w章” 可以匹配"第1章", “第一章”……等;
. 表示任意字符,包括\w所能匹配的所有字符以及空格等特殊字符;
* 表示表达式中的前一个符号可以匹配不到,或匹配任意多次,如 “第\d*章” 可以匹配 “第章”, “第1章”, “第100章”;
+ 跟*类似,但是前一个符号不能匹配不到;
{m, n} 匹配前一个字符m至n次。
注意:

*, + 符号会匹配尽可能多的内容,比如如果用"第\w*章" 来匹配,“第一节如何阅读此章"这段内容也会被匹配到,更好的写法是确定要匹配内容的长度,写成"第\w{1,2}章”。
要匹配一个不是正则表达式中的正常字符直接写即可,如"第", “1”, 甚至包括空格。但正则表达式中有定义用于匹配的一些特殊字符如果要作为普通字符匹配,则要在前面加一个"\“,比如匹配"1.1"这种格式,可以写成”\d\.\d"。"\"符号本身也要如此。

直接写入的话所有目录都在首层,如果勾选”二层“并填入匹配子目录的正则: 第\d+节 , 此时点击写入,就会将 “第1节”、“第2节”两个目录识别为“第一章”(上一个首层)的子目录

比如此书的章节为“2”、“2.1”、“2.1.3”,那么首先得勾选软件上的“首层”、“二层”、“三层”,然后在其中输入正则表达式

首层:\d
二层:\d.\d
三层:\d.\d.\d
在这里插入图片描述

或者是像这本书的

首层:第一部分
> 二层:手记1
>>三层: 一、前言
......

就需要根据特征详细规范正则表达式

在这里插入图片描述

第四步:页码偏移

由于有的扫描版等电子书的第一页是不包括摘要目录的,因此会有几页的偏移,这就需要计算一下偏移的页码,然后填入软件内。目录中的页码与pdf文件实际页码之间的差值(实际页码-书籍页码)即为页码偏移量。

在这里插入图片描述

方法:打开pdf文件将pdf翻到任意带页码的一页,如图,通过pdf阅读软件查看书籍中的页码与实际页码,将这两个数字相减即可得到页码偏移量,比如上图中的页码偏移量为28-3=25。

三、完成设置

全部设置完成后,点击【写入导航】,即可自动将目录写入PDF内,等待一段时间,待状态栏提示"******* Finished!"表示写入成功,此时可在pdf目录下找到包含书签的 原文件名_new.pdf 文件。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐