PDF电子书制作书签目录全过程
PDF电子书制作书签目录
- 所需软件
- FreePic2Pdf
- Notepad++
- 实现思路
- 第一步 检查PDF页面序号是否正确
- 第二步 从PDF中取出目录
- 第三步 使用正则表达式匹配目录格式
- 第四步 把书签目录存入PDF文件中
所需软件
以下两款软件都很容易找到。
FreePic2Pdf
用于存取PDF的书签,我们做好目录后,用该软件把目录存入PDF中。
Notepad++
一款功能强大的文本编辑器,这里我们主要用到它的正则表达式替换功能。用其他有相同功能的编辑器也可以。
也可以使用VS Code。
实现思路
首先我们要获得目录的文字,如果是文字版PDF,那直接复制粘贴皆可;如果是扫描版的PDF,则先从PDF中取出目录,再使用OCR把图片装换成文字。然后,我们要把文字转换为特定的格式,它才可以被当成书签目录使用。最后使用FreePic2Pdf把目录存入PDF,就大功告成了!
第一步 检查PDF页面序号是否正确
使用Adobe Acrobat 等PDF软件打开组织页面,确认目录的页码是否和正文的序号匹配,如果不是,先选择正文前面的页面,换一个新的序号,使得正文序号和目录保持一致。若不进行修改,目录即使制作出来也无法跳转到对应页面。
第二步 从PDF中取出目录
首先我们使用FreePic2Pdf取出PDF的标签,操作如下图:
取出完成后,默认状态下,PDF文件的同目录下会生成一个与PDF文件同名的目录,里面存放了我们刚刚生成的标签文件,其中FreePic2Pdf_bkmk.txt文件就是我们取出的标签文字,我们待会要把做好的目录保存到这里面去。对于文字版PDF,直接打开把目录部分复制到FreePic2Pdf_bkmk.txt即可。
对于扫描版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撤回就是了。
- 去除多余的符号
查找内容:
^(\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
- 添加层次
这一步我们按照要求在前面添加制表符。如下操作
第一步
查找内容:
^(\d+\.\d+\s)
替换内容:
\t$1
第二步
查找内容:
^(\d+\.\d+\.\d+\s)
替换内容:
\t\t$1
如果层次还要继续划分,可以照着添加替换,每多一层,则多一个\t。
正常来说,完成这一步格式就已经符合要求了。
第四步 把书签目录存入PDF文件中
打开FreePic2Pdf挂上PDF标签,操作如下图:
出现编辑成功提示则说明你的PDF目录已经制作好了,赶紧打开看看吧!
如果出现失败,有可能是文件被占用了,关闭相关软件重试看看。
PDF电子书制作书签目录全过程相关推荐
- 为pdf批量建立书签目录
为pdf批量建立书签目录 有些时候我们下载了一个pdf的书籍或者文档,但是没有书签,虽然可以看,但是总觉得缺少灵魂.但是如果一章一章的添加,那有过于麻烦,所以本文通过利用已有的目录 来创建一个pdf的 ...
- 【Latex学习】在生成pdf中加入书签/目录/提纲
[Latex学习]在生成pdf中加入书签/目录/提纲 [Latex学习]在生成pdf中加入书签/目录/提纲 生成目录 生成pdf书签/目录/提纲 - 方法1 生成pdf书签/目录/提纲 - 方法2 去 ...
- Caj论文转pdf(带书签目录)
方法一 caj论文传到手机或ipad端,用caj阅读app转pdf caj文件传到手机或ipad端软件,右滑生成pdf,再导出pdf.生成的pdf文件自动带书签. 该方法少数情况下会失灵,失灵时用方 ...
- pdf 一键生成书签目录
1.书签原始数据获得 一般有许多软件可以通过提供章节序号 章节标题 章节页码的格式来生成目录 第1章 基础A1 1 1.1 Scala解释器1 1.2 声明值和变量 3 1.3 常用类型 4 1.4 ...
- 给pdf电子书添加书签
当我们从网上下载到pdf电子书后,经常会发现电子书没有标签页,看起书来很不方便. 之前我介绍过一种添加书签的方法>>>点此跳转,不过有投机取巧之嫌.今天我将再次介绍一个新方法. 用到 ...
- 用Adobe acrobat给pdf文件添加书签目录(子书签目录)
1,用Adobe acrobat 软件打开待添加书签的pdf文档. 2,打开之后点击软件左边栏的书签(有时被隐藏了,点击一下界面左边靠近中间位置的箭头). 3,打开书签栏之后,把pdf定位到要加书签的 ...
- 3D游戏引擎设计 实时计算机图形学的应用方法 第2版 pdf 带索引书签目录
3D游戏引擎设计 实时计算机图形学的应用方法 第2版 目录 第1章 概述 1.1 图形硬件和游戏发展史 1.2 本书版本与软件发展史 1.3 章节导读 第2章 图形系统 2.1 基础知识 2.1. ...
- 【pdf电子书制作软件】云展网教程 | 书橱里面的书如何以文件夹的方式显示?
当书橱里面的书来自不同的文件夹时,我们可以将书籍按照文件夹的方式来分类显示. [云展网教程] 1.进入个人中心,点击我的文件夹.用户可以新建文件夹,也可以直接上传文件 [云展网教程] [云展网教程] ...
- 给PDF添加书签目录
给PDF添加书签目录 作为一个强迫症,下载到扫描版PDF后,必须将其电子化,先用Adobe Acrobat将其OCR,然后添加书签. OCR可以没有,但书签是万万不能没有的,否则那么一大块书翻阅起来绝 ...
最新文章
- 解剖人脸识别从无到有的发展史
- 代码 抠图_憋再PS抠图了,3行代码给你安排的明明白白!
- 小甲鱼 OllyDbg 教程系列 (四) : 逆向 VisualSite Designer 之 硬件断点
- 2019年最佳Python学习路线
- 数据库工作笔记005---You have an error in your SQL syntax; check the manual that corresponds to y
- iOS仿京东分类菜单之UICollectionView内容
- 第1章 数据库系统概论---数据库原理及应用
- 撰写美国作业使用APA与MLA格式的区别是什么?
- 利用手机距离感应器来切换扬声器和听筒播放
- 新猿木子李:0基础学python培训教程 python下载文件的多种方法汇总
- TLS1.3抓包分析(3)——EncryptedExtentions等
- 华为数字化人才思享汇走进兰州,助推打造“数字中国”甘肃样本
- System.Diagnostics 记录
- UnityShader之毛绒绒效果
- 浅谈Python3函数命名空间与作用域
- linux环境下常用的网络命令ping、telnet、traceroute、tcpdump
- 失去往日辉煌的快递元老宅急送,能否借即时配翻身?
- RPMBUILD 打包
- 特别好用的前端html富文本编辑器wangEditor个人使用案例
- (新版)SJTU-OJ-1049. 二哥学二叉树