批量自动化生成PDF目录标签

现在比较习惯于看电子版的专业书籍,但是有时候弄到的电子书没有书签,一个个手动添加太费事。于是找到了一些好工具可以实现半自动化PDF目录标签的生成。说半自动化是因为有些地方还需要手动调整,但是已经省了很多事。

比如我有这样一本书:

书自然是好书,但是很遗憾没有标签,看起来有些不方便。现在开始来自制标签。需要准备的软件:

1.  PDF Shaper (免费开源软件)用来把书中目录这几页PDF拿出来

2.  Adobe Acrobat Pro 2017 用来把PDF里目录这部分导出成word格式。

3.  FreePic2Pdf(免费软件,网上随便下一个即可) 用来把按要求编写的文本格式目录导入到目标PDF文档中。

现在开始制作:

1. PDF Shaper打开

扫描二维码关注公众号,回复: 1067527 查看本文章

提取成功以后可以得到这么几页PDF:

2. 现在用Acrobat把这几页PDF转存成word:

 

把word里的文本复制粘贴到TXT文本文件中便于处理:

这是直接从word里复制出来的格式,一会还得处理一下。

3. 用FreePic2Pdf制作书签。

上图的第2步是选择要处理PDF所在路径,第3步是选择格式化文本文件所在路径,这个文本还没制作,要用刚刚word复制出来的文本进行排版:

因为word里导出来的目录,页码对应的是书中的页码,而不是PDF的绝对页数,比如:

这里在书中是第1页,但是在PDF文档中实际上是15页,所以只要把所有数字加14就可以。还有一个需要注意的是,最后那个数字前面不能是空格,得是\tab才行,也需要批量替换一下,这里我就写个python脚本快速处理一下,可以参考我的:

#!/usr/bin/python3
# -*- coding: UTF-8 -*-
'''
@Author: Yin Weijie
@Date: 2018.5.25
@Description:
替换页码
'''

fin = open("aa.txt", "r")
fout = open("bb.txt", "w")

for each_line in fin:
    list = each_line.split()
    for i in range(len(list) - 1):
        fout.write(list[i])
        fout.write(' ')
    fout.write('\t')
    num = int(list[-1]) + 14
    fout.write(str(num))

    fout.write("\n")

fin.close()
fout.close()

原始文本格式:

处理后文本格式:

为了排版更清爽一点,可以根据目录层级,再加上一些\tab,例如:

后面都可以根据需要调整。制作好了以后,保存在名为FreePic2Pdf_bkmk.txt的文本中,再到这一步来:

 把这个文本放到3所指文件夹。然后开始就可以了。

最后效果如下:

参考:

http://www.cnblogs.com/dux2016/articles/6201263.html

https://blog.csdn.net/mofei123456789/article/details/78525884

猜你喜欢

转载自www.cnblogs.com/Jay-CFD/p/9099812.html