S:\ProgramTasks\py\重要且成功的python\PDF控制台提取指定页.py
import fitz # PyMuPDF
import os
def add_page_numbers_and_extract_pages(input_pdf_path, start_page, end_page):
# 获取源文件的目录
source_dir = os.path.dirname(input_pdf_path)
# 自动生成输出文件的文件名
output_pdf_filename = f"{os.path.splitext(os.path.basename(input_pdf_path))[0]}_pages_{start_page}_to_{end_page}.pdf"
# 自动生成输出文件的路径
output_pdf_path = os.path.join(source_dir, output_pdf_filename)
# 打开原始PDF文件
pdf_doc = fitz.open(input_pdf_path)
# 创建一个新的PDF文档
pdf_writer = fitz.open()
# 遍历指定范围内的每一页并添加页码
for page_num in range(start_page - 1, end_page):
page = pdf_doc[page_num]
rect = page.rect
text = f"{page_num + 1}" # 页码从1开始
# 设置字体大小
font_size = 10
font = fitz.Font() # 使用默认字体
# 计算页码的位置(页面底部居中)
text_width = font.text_length(text, font_size)
text_pos = fitz.Point((rect.width - text_width) / 2, rect.height - 30) # 调整坐标以适应你的需求
# 添加文本
page.insert_text(text_pos, text, fontsize=font_size, fontname="helvetica", color=(0, 0, 0)) # 黑色字体
# 将页面插入目标PDF文件中
pdf_writer.insert_pdf(pdf_doc, from_page=page_num, to_page=page_num)
# 保存目标PDF文件
pdf_writer.save(output_pdf_path)
# 关闭文档
pdf_doc.close()
pdf_writer.close()
if __name__ == "__main__":
# 获取用户输入并去除可能的双引号
input_pdf = input("请输入PDF文件的完整路径: ").strip('"')
start_page = int(input("请输入起始页码(页码从1开始): "))
end_page = int(input("请输入结束页码(包含结束页): "))
add_page_numbers_and_extract_pages(input_pdf, start_page, end_page)