今天用Calibre把epub文件转换为了PDF,然后导出,但是导出的PDF有部分文件名是不正确的。
解决方法:
使用PyPDF2库读取PDF的metadata.title替换文件名:
import os
import re
from PyPDF2 import PdfReader
#替换不能使用的文件名字符为下划线
def validate_title(title):
rstr = r"[\/\\\:\*\?\"\<\>\|]" # '/ \ : * ? " < > |'
new_title = re.sub(rstr, "_", title) # 替换为下划线
return new_title
#返回处理过的PDF metadata 标题
def get_pdf_title(pdf_file_name):
_title = PdfReader(pdf_file_name).metadata.title
return validate_title(_title)
WorkDir = '/PDF/Path/'
OutDir = os.path.join(WorkDir, 'out/')
pathDir = os.listdir(WorkDir)
for file in pathDir:
old_file_name = os.path.join(WorkDir, file)
new_file_name = os.path.join(OutDir, get_pdf_title(old_file_name) + '.pdf')
os.rename(old_file_name, new_file_name)
print(new_file_name + "\n")