【PdgCntEditor】利用PDF目录书签编辑软件PdgCntEditor为PDF型图书快速添加书签的方法
创始人
2024-02-15 09:07:47

一、给PDF加书签的两种情况

1.1 文字版PDF添加书签的理想情形

假设我们弄到了一本PDF,这个PDF如果是由Word或WPS转化而来,其中的标题也就代表了目录,我们可以用acrobat PDF中的AutuBookmark插件实现自动识别标题为目录的方法来添加书签。

这是完美的一种情况,因为即使PDF最初确实是从Word或WPS转化而来,也有可能识别不出来。因为你得到的这个版本的PDF,可能已经经过了很多次的压缩、格式转换、特殊处理,导致某些标题/目录层级信息丢失。

另一个方面,网上很多PDF都是扫描版本的,特别是中文图书;并且并不是所有人都喜欢用acrobat PDF软件(有些人喜欢用WPS PDF、福昕PDF、万兴PDF等等)。

1.2 本文适用的条件——扫描版PDF图书

如果你的PDF中没有目录,或者不属于图书的范畴,那么就不属于本文适用的范围。

二、情形的划分

  • 最理想的情况A:在网购平台、数字图书售卖网站或者类似“豆瓣”这种图书推荐网站上,找得到图书的目录+页码信息,就可以直接利用相关目录文字进行后续处理;这种应该是最为常见的情况。
  • 不那么理想的情况B:在图书中有已识别成文字的目录,由于该图书已经太过古老或冷门,在网上找不到相关网页对该图书的目录进行介绍;可以直接在PDF中复制目录文字,有些地方可能识别不准需要修改,但总算少去了自己OCR的这一步。
  • 特不理想的情况C:PDF是扫描得到的,并且目录那几页也没有经过OCR技术扫描成“可搜索PDF”;这时候就需要自己OCR了,对于小白来说不太友好。
  • 最不理想的情况D:PDF中没有目录那几页,或者目录那几页不能直接复制、特别模糊、水印特别重,导致你OCR获取文本的选项也不那么顺利。
  • 特殊情况E:在超星图书数据库中的PDF,都有相应的SS号,如果你知道如何查询图书的SS号,利用【书签获取小工具_用SS号获取书签2015.05.05_晴天软件】你可以直接用SS号搜索到图书的书签文本。

三、对情况A的处理

3.1 获取书签文本信息

如上所述:

在网购平台、数字图书售卖网站或者类似“豆瓣”这种图书推荐网站上,找得到图书的目录+页码信息,就可以直接利用相关目录文字进行后续处理;这种应该是最为常见的情况。

但是后来,我实际去做的时候,发现有些网站中只提供目录不提供页码,比如豆瓣、京东。
在这里插入图片描述
相比之下,淘宝就比较良心,大部分的目录都有页码。这样有一个好处就是你知道这一小节究竟写了多少页,避免有些作者草草了事花一两页写完明明很复杂的一个专题,你还不知道的情况。
在这里插入图片描述
于是我们借助淘宝获得了图书的书签信息。

3.2 将书签文本粘贴进PdgCntEditor进行处理

将上述文本粘贴进PdgCntEditor软件,我们可以发现页码前基本都是空格。
而PdgCntEditor软件的格式要求是页码前是一个缩进才能识别成功,因此我们需要将空格转化成缩进。
在这里插入图片描述

这时候我们就需要用到正则表达式的功能。
在这里插入图片描述
在正则表达式中我们输入【 ([0-9]+)$】,注意最前面有一个手动空格(因为PdgCntEditor不支持诸如/s、/t、/p等通配符);其中()表示部分替换分组,[0-9]表示任意数字,+表示一个或多个数字,$表示匹配句尾。
在替换为输入框中是【 $1】,注意最前面有一个手动缩进;其中$1表示部分替换第1个分组的内容保留。
在这里插入图片描述
为了避免出错,我们可以点击如上图所示的「测试」按钮,先对正则表达式进行验证。

单击「替换」,空格即变成了缩进,此时此刻你已经可以将书签文本应用到PDF中去了,只是没有分级而已。
在这里插入图片描述
如果你想要继续分级,那么你接着往下看!

首先对二级目录的前面加一个缩进。

在正则表达式中我们输入【(^[0-9]+.[0-9]+) 】,注意最后面有一个手动空格,这是匹配二级目录;其中()表示部分替换分组,[0-9]表示任意数字,+表示一个或多个数字,^表示匹配句首。
在替换为输入框中是【 $1】,注意最前面有一个手动缩进;其中$1表示部分替换第1个分组的内容保留。
在这里插入图片描述
而后,在三级目录的前面加两个缩进。
在正则表达式中我们输入【(^[0-9]+.[0-9]+.[0-9]+) 】,注意最后面有一个手动空格,这是匹配三级目录。
在替换为输入框中是【 $1】,注意最前面有两个手动缩进;其中$1表示部分替换第1个分组的内容保留。
在这里插入图片描述
由于这个PDF最多只有三级目录,因此处理到这一步就结束了。小伙伴们如果看到更多级目录,按照二级到三级的转换思路进行递归即可。

第三部分的思路,来自这篇记一次正则表达式实战,给pdf加目录,虽然这篇文章是一篇爬虫文,源头也已经消失在互联网大海中,但是也给我带来了莫大的精神灵感。
而这篇对正则表达式部分替换的介绍也给我知识上的补充,谢谢上述两篇文章的作者!!

四、对情况A的Vim编辑器命令处理分析

其实,最初我是看了pdf生成目录-如何给没有目录的pdf手动添加目录中的通过Vim编辑器中的命令来快速编辑书签文本使其符合PdgCntEditor的格式要求。

  • 三级目录添加两个tab。命令%s/\v^\ze(\d+\.\d+\.)/\t\t/
  • 给二级目录添加一个缩进,命令%s/\v^\ze(\d+\.\d+)/\t/
  • 将目录名和页码中间的字符串替换为 Tab,命令%s/\v(\s\.)+\s/\t/
  • 页码重定位,加上一个偏移量,命令%s/\d\+$/\=submatch(0)+22/
  • 保存,或使用命令:wq保存并退出

但是,我发现(其实作者也提到了)第3步操作失败,由于我对Vim命令还很陌生,所以就没再继续探究了。
不得不说这是一个很棒的方法,因为你只需要依次执行几条命令就可以;相比我上面在第三节介绍的方法,可以节省一半的步骤(只要你对Vim熟悉)。

后面我有时间,会补充和完善一下上面大牛提出的方法。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...