Python实现pdf文件合并,并把文件名作为书签

指定文件夹中读取所有 PDF 文件,并将它们合并为一个文件,每个文件的文件名作为书签:

在这里插入图片描述
在这里插入图片描述

导入必要的库: 首先导入 osPyPDF2 库。

pip install PyPDF2

运行程序之前,建议把文件先排好序,弄到一个文件夹里。

合并程序如下:

import os
from PyPDF2 import PdfReader, PdfWriter

def merge_pdfs_with_bookmarks(pdf_folder, output):
    pdf_writer = PdfWriter()
    pdf_files = [os.path.join(pdf_folder, f) for f in os.listdir(pdf_folder) if f.endswith('.pdf')]
    
    current_page = 0  # 用于跟踪当前页面编号

    for file in pdf_files:
        pdf_reader = PdfReader(file)
        num_pages = len(pdf_reader.pages)
        
        # 添加文件中的每一页
        for page_num in range(num_pages):
            page = pdf_reader.pages[page_num]
            pdf_writer.add_page(page)
        
        # 添加书签,书签标题为文件名,书签位置为当前页码
        bookmark_title = os.path.basename(file)
        pdf_writer.add_outline_item(bookmark_title, current_page)
        
        current_page += num_pages  # 更新当前页码

    # 保存合并后的PDF文件
    with open(output, 'wb') as out_file:
        pdf_writer.write(out_file)

if __name__ == '__main__':
    pdf_folder = 'path/to/your/pdf/folder'  # 替换为实际的PDF文件夹路径
    output_pdf = 'merged.pdf'  # 输出合并的PDF文件名

    merge_pdfs_with_bookmarks(pdf_folder, output_pdf)
    print(f"合并完成,输出文件: {output_pdf}")

说明

获取文件夹中的所有 PDF 文件:

  • 使用 os.listdir(pdf_folder) 列出文件夹中的所有文件。
  • 使用列表推导式筛选出所有以 .pdf 结尾的文件,并组合成完整路径。
  1. 初始化 current_page: 用于跟踪当前页面编号。
  2. 读取并添加每个 PDF 文件的页面: 使用 PdfReader 读取每个文件,遍历每一页并添加到 PdfWriter 实例中。
  3. 添加书签: 使用 add_outline_item 方法添加书签,书签的标题为文件名,位置为当前页面编号。
  4. 更新当前页码: 每添加一个文件的所有页面后,更新 current_page 以正确计算下一个书签的位置。

使用步骤

  1. 将脚本中的 pdf_folder 路径替换为实际存放 PDF 文件的文件夹路径。
  2. 设置输出文件的文件名。
  3. 运行脚本。

此程序会将指定文件夹中的所有 PDF 文件合并为一个 PDF 文件,并为每个文件添加一个书签,书签的标题为文件名。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值