Fix Index for The.Shellcoders.Handbook.2nd

先用freepic2pdf 从pdf中抓一份空的目录文件出来,见下图:

大小: 30.39 K
尺寸: 400 x 191
浏览: 74 次
点击打开新窗口浏览全图

抓取后编辑生成的FreePic2Pdf_bkmk.txt文件。按照需要的格式进行。

格式如下:

1. 文本格式

2. 汉字要存为GB2312 编码
如果误存成了utf-8 看后面的效果图有多惨

3. 用
<TAB>表示书签的层次深度一个<TAB>一个层次目录的文字与最后的数字之间也是用一个<TAB>

由于原PDF为直接转换的非扫描版,这里自然也舒服很多,直接去pdf里面copy就好了。不需要去OCR

按照格式整理完成,用tab来控制书签的层级后碰到一个问题。修改页码的问题。因为PDF的目录页码是根据实体书的,一般对从首页开始都有个偏差,比如,页码是3的可能实际中是在pdf的20页。我这里偷懒用脚本来修改,直接把所有的页码加上一个偏移量,这里本次操作偏移量是27

code:

#!/usr/bin/python



#Filename: fixnum for pdf's index



import re

import sys



# replace string's num with add a var init

# sth like xxxx 22 will be replace to xxxx 22+num

def replaceString(strinput,num):

     
re.search(r'(\t[0-9]+)',strinput)

     if 
p is not None:

          
group p.group()

          if 
group is not None:

               
oldnum int(p.group())

               
newnum oldnum+int(num)

               
strinput strinput.replace(str(oldnum),str(newnum))

               
#print strinput

     
return strinput



args 
sys.argv

filename 
args[1]

num args[2]

print 
"match the file from " filename

fin 
file(filename,'r')

fout file(filename "fix",'w+')

while 
True:

     
line fin.readline()

     if 
len(line) == 0:

          break

     
lineEnd replaceString(line,num)

     
fout.write(lineEnd)

fin.close()

fout.close()

执行命令:

python fixnum.py FreePic2Pdf_bkmk.txt 27

生成的FreePic2Pdf_bkmk.txtfix就是修改后的结果,改名保存为FreePic2Pdf_bkmk.txt后就可以导入了。如下图:

大小: 30.65 K
尺寸: 400 x 193
浏览: 74 次
点击打开新窗口浏览全图

OK,剩下的就进pdf里面fix几个非数字页码的目录的指向就搞定了。

收工。

附上修改完成的文件和用到的一些东东。

 

附件: fixnum.py (779 bytes, 下载次数:74)

附件: wiley.the.shellcoders.handbook.2nd.edition.aug.2007_index.rar (5.5 K, 下载次数:84)

附件: wiley.the.shellcoders.handbook.2nd.edition.aug.2007.rar (2.98 M, 下载次数:122)

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):