今天用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")