PDF控制台提取指定页

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)

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注