PDF书签制作
目錄
一、準(zhǔn)備工作
二、過(guò)程
1.打開FreePic2Pdf軟件
2.編碼調(diào)整目錄的格式為書簽需要的格式
3.文本編輯器實(shí)現(xiàn)書簽格式調(diào)整
三、參考文章
從網(wǎng)上下的很多的PDF是沒(méi)有書簽的,網(wǎng)上的教程不是很完整,參考網(wǎng)上的教程,自己寫篇制作PDF書簽的總結(jié)
一、準(zhǔn)備工作
1.空書簽PDF
2.對(duì)應(yīng)PDF的目錄(本文示例目錄來(lái)自豆瓣)
3.FreePic2Pdf工具
鏈接:https://pan.baidu.com/s/1gKKe6T3x-atifSEElA-9Mw? 提取碼:5080?
4.支持替換文本內(nèi)容的編輯器:例如nodepad++
(本篇文章使用python操作目錄格式,使用文本編輯器的請(qǐng)由第二部分第3點(diǎn)進(jìn)入相關(guān)文章,或繼續(xù)往下讀,文本編輯器的方法沒(méi)辦法操作目錄頁(yè)碼)
空書簽PDF示例:
二、過(guò)程
1.打開FreePic2Pdf軟件
點(diǎn)擊圖中更改PDF按鈕
出現(xiàn)如圖所示,按步驟操作選擇要操作的文件夾:
這時(shí)接口文件夾(圖中2的路徑)會(huì)有兩個(gè)文件:
點(diǎn)擊打開圖中的TXT文件,復(fù)制從準(zhǔn)備好的目錄,如這從豆瓣找的目錄
2.編碼調(diào)整目錄的格式為書簽需要的格式
使用的python代碼如下:
#!/usr/bin/python # -*- coding: UTF-8 -*- import re##修改基礎(chǔ)頁(yè)碼數(shù),在判斷語(yǔ)句中 def alterPage(file):"""替換文件中的字符串,目錄的頁(yè)碼由代碼增加的:param file:文件名:return:"""file_data = ""with open(file, "r", encoding="utf-8") as f:for line in f:if(re.match(r'^(\d{1,2}\.\d{1,2}\.\d)',line)!=None):line=re.sub(r'^(\d{1,2}\.\d{1,2}\.\d)',r'\t\t\1',line)#替換第二層else:line=re.sub(r'^(\d{1,2}\.\d)',r'\t\1',line)#替換每章第一層標(biāo)簽# line=re.sub(r' ',r'\t',line)#替換空格為\treobj=re.search(r'\d{1,3}$',line)#找到標(biāo)簽的目錄頁(yè)數(shù)if(reobj!=None):num=reobj.group()num=str(int(num)+11)#加上基本頁(yè),這錯(cuò)的是11頁(yè)endstr='\t'+numline=re.sub(r'\d{1,3}$',endstr,line)#替換頁(yè)數(shù)# line = line.replace(old_str,new_str)file_data += lineprint("修改完成")with open(file,"w",encoding="utf-8") as f:f.write(file_data)print("寫入完成")#轉(zhuǎn)化目錄格式為指定的書簽格式 def alter(file):"""替換文件中的字符串,目錄的頁(yè)碼由FreePic2Pdf軟件.itf書簽配置的BasePage字段增加的(需加一如11應(yīng)為12開始):param file:文件名:return:"""file_data = ""with open(file, "r", encoding="utf-8") as f:for line in f:if(re.match(r'^(\d{1,2}\.\d{1,2}\.\d)',line)!=None):line=re.sub(r'^(\d{1,2}\.\d{1,2}\.\d)',r'\t\t\1',line)#替換第二層else:line=re.sub(r'^(\d{1,2}\.\d)',r'\t\1',line)#替換每章第一層標(biāo)簽# line=re.sub(r' ',r'\t',line)#替換空格為\treobj=re.search(r'\d{1,3}$',line)#找到標(biāo)簽的目錄頁(yè)數(shù)if(reobj!=None):num=reobj.group()endstr='\t'+numline=re.sub(r'\d{1,3}$',endstr,line)#替換頁(yè)數(shù)# line = line.replace(old_str,new_str)file_data += lineprint("修改完成")with open(file,"w",encoding="utf-8") as f:f.write(file_data)print("寫入完成")alterPage("./Spring.txt")操作完畢后的結(jié)果:
繼續(xù)使用FreePic2Pdf,如圖操作:
最后生成有標(biāo)簽的PDF:
并且書簽的跳轉(zhuǎn)也沒(méi)有問(wèn)題:
3.文本編輯器實(shí)現(xiàn)書簽格式調(diào)整
1)分第一層
^(\d{1,1}\.\d) 替換為:\t\1\1表示原來(lái)自身字符串2)分第二層
^(\s\d{1,2}\.\d\.\d) 替換為\t\t\1 若是已經(jīng)有一個(gè)tab符\t,那就使用\t\1如果還有更多層 , 那么也依照次方法進(jìn)行分層.
將頁(yè)面號(hào)設(shè)置成符合要求
每個(gè)標(biāo)題后面跟著的頁(yè)碼非常重要 , 如果想要在pdf點(diǎn)擊標(biāo)題就跳轉(zhuǎn)到相應(yīng)的頁(yè)的話 , 那么一定要設(shè)置好 .
- 標(biāo)題到頁(yè)面只能是一個(gè)\t
- 復(fù)制從標(biāo)題到頁(yè)碼中間的空格 , 選擇替換成\t即可.
剩余步驟與2點(diǎn)一致
若是需要替換末尾的頁(yè)碼數(shù)字的格式參考下圖:
結(jié)果:
修改目錄的起始頁(yè)(也就是你頁(yè)碼數(shù)字標(biāo)1的頁(yè)面)
? 打開FreePic2Pdf.itf,修改“BasePage=1”這一項(xiàng);假設(shè)你頁(yè)碼為1的頁(yè)面在PDF文檔的第15頁(yè)那么就修改為“BasePage=15”
三、參考文章
[1] https://blog.csdn.net/qq_34104395/article/details/78766400?
?
總結(jié)
- 上一篇: 计算KL散度与JS散度的MATLAB程序
- 下一篇: RS232和RS485标准在DB9公/母