改进思路:
当一个pdf文件重命名失败时不要终止程序,继续对下一个pdf文件进行操作
已打包成exe文件,链接放在评论区
python
import os
import time
import fitz
def find_largest_font_sentence(pdf_path):
largest_font_size = 0
largest_font_sentence = ''
maxsize=0
# 打开PDF文件
document = fitz.open(pdf_path)
for page_number in range(1):
page = document.load_page(page_number)
blocks = page.get_text("dict")["blocks"]
for block in blocks:
if "lines" in block: # 检查是否存在 lines 字段
for line in block["lines"]:
for span in line["spans"]:
if span["size"] > largest_font_size:
largest_font_size = span["size"]
largest_font_sentence = span["text"]
maxsize=largest_font_size
for block in blocks:
if "lines" in block: # 检查是否存在 lines 字段
for line in block["lines"]:
for span in line["spans"]:
if span["size"] ==maxsize:
if largest_font_sentence!=span["text"]:
largest_font_sentence = largest_font_sentence+' '+span["text"]
if largest_font_sentence.count(' ')<4 or "arXiv" in largest_font_sentence:
largest_font_sentence=''
largest_font_size=0
for block in blocks:
if "lines" in block: # 检查是否存在 lines 字段
for line in block["lines"]:
for span in line["spans"]:
##判定句子中空格的个数如果大于3就认为它是标题而非期刊名称
if span["size"] > largest_font_size and span["text"].count(' ')>3 and "arXiv" not in span["text"]:
largest_font_size = span["size"]
largest_font_sentence = span["text"]
maxsize = largest_font_size
for block in blocks:
if "lines" in block: # 检查是否存在 lines 字段
for line in block["lines"]:
for span in line["spans"]:
if span["size"] == maxsize:
if largest_font_sentence != span["text"]:
largest_font_sentence = largest_font_sentence + ' ' + span["text"]
return largest_font_sentence
# 用于测试的PDF文件路径
def rename_pdfs(directory):
failed_files = [] # 记录重命名失败的文件
for filename in os.listdir(directory):
if filename.endswith(".pdf"):
filepath = os.path.join(directory, filename)
filepath=filepath.strip()
largest_font_sentence = find_largest_font_sentence(filepath)
title=largest_font_sentence
if ":" in title:
title = title.replace(":", ":")
new_filename = title.strip() + ".pdf"
new_filepath = os.path.join(directory, new_filename)
try:
os.rename(filepath, new_filepath)
except FileNotFoundError:
failed_files.append(filename)
if len(failed_files) > 0:
if len(failed_files) > 0:
print(f"重命名失败 {len(failed_files)} 个pdf文件:")
for file in failed_files:
print(file)
# 指定包含英文论文PDF的目录路径
#比如pdf文件在 D:\学习\论文
#那么引号内需要输入的是 D:\\学习\\论文
print("请输入论文的存放目录")
a=input("输入路径")
a=a.replace("\\","/")
pdf_directory = a
# 调用函数进行重命名
rename_pdfs(pdf_directory)
input("按下回车键可关闭窗口")