PDF电子书制作书签目录

  • 所需软件
    • FreePic2Pdf
    • Notepad++
  • 实现思路
  • 第一步 检查PDF页面序号是否正确
  • 第二步 从PDF中取出目录
  • 第三步 使用正则表达式匹配目录格式
  • 第四步 把书签目录存入PDF文件中

所需软件

以下两款软件都很容易找到。

FreePic2Pdf

用于存取PDF的书签,我们做好目录后,用该软件把目录存入PDF中。

Notepad++

一款功能强大的文本编辑器,这里我们主要用到它的正则表达式替换功能。用其他有相同功能的编辑器也可以。
也可以使用VS Code

实现思路

首先我们要获得目录的文字,如果是文字版PDF,那直接复制粘贴皆可;如果是扫描版的PDF,则先从PDF中取出目录,再使用OCR把图片装换成文字。然后,我们要把文字转换为特定的格式,它才可以被当成书签目录使用。最后使用FreePic2Pdf把目录存入PDF,就大功告成了!

第一步 检查PDF页面序号是否正确

使用Adobe Acrobat 等PDF软件打开组织页面,确认目录的页码是否和正文的序号匹配,如果不是,先选择正文前面的页面,换一个新的序号,使得正文序号和目录保持一致。若不进行修改,目录即使制作出来也无法跳转到对应页面。

第二步 从PDF中取出目录

  1. 首先我们使用FreePic2Pdf取出PDF的标签,操作如下图:

    取出完成后,默认状态下,PDF文件的同目录下会生成一个与PDF文件同名的目录,里面存放了我们刚刚生成的标签文件,其中FreePic2Pdf_bkmk.txt文件就是我们取出的标签文字,我们待会要把做好的目录保存到这里面去。

  2. 对于文字版PDF,直接打开把目录部分复制到FreePic2Pdf_bkmk.txt即可。

  3. 对于扫描版PDF,首先我们要取出目录部分。可使用PDF软件或者该网站把目录部分保存为一个独立的PDF文件或者几张图片,再使用OCR软件或者在线OCR网站得到目录文字。
    注:最近搜狗输入法上线了智能助手,也有OCR功能,识别率非常不错。可以用它比较方便的识别,就免去处理图片的麻烦。


    用上面的OCR往往是文字和页码在拆开在两行,这时可以用python代码把它们处理一下:
    将文本放在D://data.txt中,使用VScode运行,就可以得到文字和页码在一行的结果,有问题及时修改即可

with open( 'D://data.txt', 'r' , encoding='utf-8') as f:i=0string=""for line in f.readlines():line=line.strip()if(i%2==0):string = lineelse:string=string+'\t'+lineprint(string)i=i+1

第三步 使用正则表达式匹配目录格式

得到目录文字后,我们需要将其变成特定的格式才可以被识别成书签目录。
格式:每个制表符为一个层次,每行后面加一个制表符再加上页码

第一章 AAA1.1 AAA   11.1.1 AAA  31.1.2 AAA  51.2 AAA    61.2 AAA    8

我们拿到的目录文字一般是这样的

第一章 AAA
1.1AAA........................................................1
1.1.1 AAA........................................................3
1.1.2 AAA........................................................5
1.2 AAA........................................................6
1.2AAA........................................................8

如果是OCR识别出来的文字,往往不可能全部都识别对,要对文字内容进行对照,改成正确的,特别是X.X.X(X为数字)的格式的.有可能识别成了其他符号

接下来我们使用Notepad++的正则表达式替换得到目的格式,用Notepad++打开FreePic2Pdf_bkmk.txt,按Ctrl+H打开替换窗口,把选中模式改为正则表达式,替换时建议使用替换,而不是全部替换,万一出现意外可以及时发现,不过出现了也就按Ctrl+Z撤回就是了。

  1. 去除多余的符号

查找内容:

^(\d+(\.\d+)+)\s*([\u4e00-\u9fa5a-zA-Z0-9]*)([^\u4e00-\u9fa5a-zA-Z0-9]*)(\d+)$

替换内容:

$1 $3\t$5

说明:

正则表达式 含义 备注
^(\d+(.\d+)+) 匹配开头为X.X.X字符串(X为整数) 要是匹配第X章,则改成 (第\d+章) 。
\s* 匹配0或多个空格字符 有时识别的结果会多一些空格
([\u4e00-\u9fa5a-zA-Z0-9]*) 匹配标题内容(包含了中文大小写英文字母和数字) 如果标题中含有符号,要往中括号里面添加上这个符号,不然会识别错误。如添加空格和-号和、号,改成([\u4e00-\u9fa5a-zA-Z0-9’ '-\、]*),有一些符号需要转义,在前面加\
([^\u4e00-\u9fa5a-zA-Z0-9]*) 匹配页码和标题间的各种符号(除了中文大小写英文字母和数字外的字符)
(\d+) 匹配页码
$ 匹配结尾
$1 代表了上面匹配到的正则表达式中第一个()括起来的值 $3和$5依次类推
\t 代表了一个制表符

经过这层处理,得到的目录应该类似下面这样:

第一章 AAA
1.1 AAA 1
1.1.1 AAA   3
1.1.2 AAA   5
1.2 AAA 6
1.2 AAA 8
  1. 添加层次
    这一步我们按照要求在前面添加制表符。如下操作

第一步
查找内容:

^(\d+\.\d+\s)

替换内容:

\t$1

第二步
查找内容:

^(\d+\.\d+\.\d+\s)

替换内容:

\t\t$1

如果层次还要继续划分,可以照着添加替换,每多一层,则多一个\t。
正常来说,完成这一步格式就已经符合要求了。

第四步 把书签目录存入PDF文件中

打开FreePic2Pdf挂上PDF标签,操作如下图:

出现编辑成功提示则说明你的PDF目录已经制作好了,赶紧打开看看吧!
如果出现失败,有可能是文件被占用了,关闭相关软件重试看看。

PDF电子书制作书签目录全过程相关推荐

  1. 为pdf批量建立书签目录

    为pdf批量建立书签目录 有些时候我们下载了一个pdf的书籍或者文档,但是没有书签,虽然可以看,但是总觉得缺少灵魂.但是如果一章一章的添加,那有过于麻烦,所以本文通过利用已有的目录 来创建一个pdf的 ...

  2. 【Latex学习】在生成pdf中加入书签/目录/提纲

    [Latex学习]在生成pdf中加入书签/目录/提纲 [Latex学习]在生成pdf中加入书签/目录/提纲 生成目录 生成pdf书签/目录/提纲 - 方法1 生成pdf书签/目录/提纲 - 方法2 去 ...

  3. Caj论文转pdf(带书签目录)

    方法一 caj论文传到手机或ipad端,用caj阅读app转pdf caj文件传到手机或ipad端软件,右滑生成pdf,再导出pdf.生成的pdf文件自动带书签.  该方法少数情况下会失灵,失灵时用方 ...

  4. pdf 一键生成书签目录

    1.书签原始数据获得 一般有许多软件可以通过提供章节序号 章节标题 章节页码的格式来生成目录 第1章 基础A1 1 1.1 Scala解释器1 1.2 声明值和变量 3 1.3 常用类型 4 1.4 ...

  5. 给pdf电子书添加书签

    当我们从网上下载到pdf电子书后,经常会发现电子书没有标签页,看起书来很不方便. 之前我介绍过一种添加书签的方法>>>点此跳转,不过有投机取巧之嫌.今天我将再次介绍一个新方法. 用到 ...

  6. 用Adobe acrobat给pdf文件添加书签目录(子书签目录)

    1,用Adobe acrobat 软件打开待添加书签的pdf文档. 2,打开之后点击软件左边栏的书签(有时被隐藏了,点击一下界面左边靠近中间位置的箭头). 3,打开书签栏之后,把pdf定位到要加书签的 ...

  7. 3D游戏引擎设计 实时计算机图形学的应用方法 第2版 pdf 带索引书签目录

    3D游戏引擎设计  实时计算机图形学的应用方法  第2版 目录 第1章 概述 1.1 图形硬件和游戏发展史 1.2 本书版本与软件发展史 1.3 章节导读 第2章 图形系统 2.1 基础知识 2.1. ...

  8. 【pdf电子书制作软件】云展网教程 | 书橱里面的书如何以文件夹的方式显示?

    当书橱里面的书来自不同的文件夹时,我们可以将书籍按照文件夹的方式来分类显示. [云展网教程] 1.进入个人中心,点击我的文件夹.用户可以新建文件夹,也可以直接上传文件 [云展网教程] [云展网教程] ...

  9. 给PDF添加书签目录

    给PDF添加书签目录 作为一个强迫症,下载到扫描版PDF后,必须将其电子化,先用Adobe Acrobat将其OCR,然后添加书签. OCR可以没有,但书签是万万不能没有的,否则那么一大块书翻阅起来绝 ...

最新文章

  1. 解剖人脸识别从无到有的发展史
  2. 代码 抠图_憋再PS抠图了,3行代码给你安排的明明白白!
  3. 小甲鱼 OllyDbg 教程系列 (四) : 逆向 VisualSite Designer 之 硬件断点
  4. 2019年最佳Python学习路线
  5. 数据库工作笔记005---You have an error in your SQL syntax; check the manual that corresponds to y
  6. iOS仿京东分类菜单之UICollectionView内容
  7. 第1章 数据库系统概论---数据库原理及应用
  8. 撰写美国作业使用APA与MLA格式的区别是什么?
  9. 利用手机距离感应器来切换扬声器和听筒播放
  10. 新猿木子李:0基础学python培训教程 python下载文件的多种方法汇总
  11. TLS1.3抓包分析(3)——EncryptedExtentions等
  12. 华为数字化人才思享汇走进兰州,助推打造“数字中国”甘肃样本
  13. System.Diagnostics 记录
  14. UnityShader之毛绒绒效果
  15. 浅谈Python3函数命名空间与作用域
  16. linux环境下常用的网络命令ping、telnet、traceroute、tcpdump
  17. 失去往日辉煌的快递元老宅急送,能否借即时配翻身?
  18. RPMBUILD 打包
  19. 特别好用的前端html富文本编辑器wangEditor个人使用案例
  20. (新版)SJTU-OJ-1049. 二哥学二叉树

热门文章

  1. 想要不被裁,看一看 13 年华为老兵的宝贵经验
  2. 上网行为管理设备的介绍,部署与使用
  3. 嵌入式系统,嵌入式系统定义和使用,嵌入式系统和桌面通用系统的区别,嵌入式系统结构组成,嵌入式软件组成
  4. 原来我是个自由主义者
  5. 关于2020年与2021年的网搭国赛参考答案发布情况
  6. 怀念到哭泣、再美也伤
  7. 前后端分离-----SEO优化
  8. 硬盘对拷后没法启动怎么办
  9. 2022-2027年中国教育云行业市场调研及未来发展趋势预测报告
  10. 【Windows问题解决】 Win10无法打开Wlan,但是驱动正常的解决方案