无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 204|回复: 10
打印 上一主题 下一主题

[求助] 求推荐个pdf上下页合并的软件

[复制链接]
跳转到指定楼层
1#
发表于 昨天 21:45 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
11#
发表于 7 小时前 | 只看该作者
QQQQQQQIU
回复

使用道具 举报

10#
发表于 7 小时前 | 只看该作者
围观
回复

使用道具 举报

9#
发表于 7 小时前 | 只看该作者
不是很理解上下页合并是怎么回事?
回复

使用道具 举报

8#
发表于 7 小时前 | 只看该作者
PDFShaper_13.8_Green绿色版合并分割加密解密转换提取PDF
回复

使用道具 举报

7#
发表于 昨天 23:15 | 只看该作者
你需要用 Python 编写一个程序,实现将指定文件夹中的 PDF 文件按序号合并成一个新 PDF,并且这个新 PDF 要包含可点击的目录(左侧),点击目录项能跳转到对应的 PDF 内容(右侧),最终合并后的 PDF 文件名也由你指定。
实现思路
依赖库准备:使用 PyPDF2 处理 PDF 合并和目录(书签)添加,os 处理文件路径,tkinter 提供简单的图形化输入界面(方便你输入文件夹路径、输出文件名)。
核心步骤:
获取指定文件夹下的所有 PDF 文件,并按文件名序号排序;
创建新的 PDF 写入对象,逐个合并 PDF 文件;
为每个合并的 PDF 文件添加书签(目录项),并设置书签的跳转位置;
保存合并后的 PDF 文件,文件名由你指定。
  1. import os
  2. import tkinter as tk
  3. from tkinter import filedialog, simpledialog, messagebox
  4. from PyPDF2 import PdfMerger, PdfReader, PdfWriter

  5. def get_sorted_pdf_files(folder_path):
  6.     """
  7.     获取指定文件夹下的所有PDF文件,并按文件名中的数字序号排序
  8.     :param folder_path: 目标文件夹路径
  9.     :return: 排序后的PDF文件路径列表
  10.     """
  11.     pdf_files = []
  12.     for file in os.listdir(folder_path):
  13.         if file.lower().endswith('.pdf'):
  14.             file_path = os.path.join(folder_path, file)
  15.             pdf_files.append(file_path)
  16.    
  17.     # 按文件名中的数字序号排序(提取文件名中的数字,无数字则放最后)
  18.     def extract_number(filename):
  19.         import re
  20.         numbers = re.findall(r'\d+', os.path.basename(filename))
  21.         return int(numbers[0]) if numbers else 999999
  22.    
  23.     pdf_files.sort(key=extract_number)
  24.     return pdf_files

  25. def merge_pdfs_with_bookmarks(folder_path, output_filename):
  26.     """
  27.     合并PDF并添加书签(目录)
  28.     :param folder_path: 源PDF文件夹路径
  29.     :param output_filename: 输出PDF文件名(含路径)
  30.     """
  31.     # 获取排序后的PDF文件
  32.     pdf_files = get_sorted_pdf_files(folder_path)
  33.     if not pdf_files:
  34.         messagebox.showerror("错误", "指定文件夹中未找到PDF文件!")
  35.         return
  36.    
  37.     merger = PdfWriter()
  38.     current_page = 0  # 记录当前合并到的页码
  39.    
  40.     for pdf_file in pdf_files:
  41.         try:
  42.             reader = PdfReader(pdf_file)
  43.             num_pages = len(reader.pages)
  44.             
  45.             # 将当前PDF的所有页面添加到合并器
  46.             for page in reader.pages:
  47.                 merger.add_page(page)
  48.             
  49.             # 添加书签(目录项):书签名为PDF文件名,跳转至当前PDF的第一页
  50.             bookmark_name = os.path.splitext(os.path.basename(pdf_file))[0]
  51.             merger.add_outline_item(
  52.                 title=bookmark_name,
  53.                 page_number=current_page,  # 跳转的页码(从0开始)
  54.                 parent=None
  55.             )
  56.             
  57.             # 更新当前页码
  58.             current_page += num_pages
  59.             print(f"成功处理:{pdf_file}")
  60.         except Exception as e:
  61.             messagebox.warning("警告", f"处理文件 {pdf_file} 失败:{str(e)}")
  62.             continue
  63.    
  64.     # 保存合并后的PDF
  65.     try:
  66.         with open(output_filename, 'wb') as output_file:
  67.             merger.write(output_file)
  68.         messagebox.showinfo("成功", f"PDF合并完成!\n文件保存至:{output_filename}")
  69.     except Exception as e:
  70.         messagebox.showerror("错误", f"保存PDF失败:{str(e)}")
  71.     finally:
  72.         merger.close()

  73. def main():
  74.     """主函数:图形化界面交互"""
  75.     root = tk.Tk()
  76.     root.title("PDF合并工具(带目录)")
  77.     root.geometry("400x200")
  78.    
  79.     # 选择文件夹按钮
  80.     def select_folder():
  81.         folder_path = filedialog.askdirectory(title="选择包含PDF的文件夹")
  82.         if folder_path:
  83.             folder_var.set(folder_path)
  84.    
  85.     # 执行合并按钮
  86.     def start_merge():
  87.         folder_path = folder_var.get()
  88.         if not folder_path:
  89.             messagebox.showerror("错误", "请先选择PDF文件夹!")
  90.             return
  91.         
  92.         # 输入输出文件名
  93.         output_name = simpledialog.askstring("输入", "请输入合并后的PDF文件名(无需加.pdf):")
  94.         if not output_name:
  95.             messagebox.showwarning("警告", "文件名不能为空!")
  96.             return
  97.         
  98.         # 拼接输出文件路径(保存到源文件夹)
  99.         output_filename = os.path.join(folder_path, f"{output_name}.pdf")
  100.         merge_pdfs_with_bookmarks(folder_path, output_filename)
  101.    
  102.     # 界面控件
  103.     folder_var = tk.StringVar()
  104.     tk.Label(root, text="PDF文件夹路径:").pack(pady=10)
  105.     tk.Entry(root, textvariable=folder_var, width=50).pack(pady=5)
  106.     tk.Button(root, text="选择文件夹", command=select_folder).pack(pady=5)
  107.     tk.Button(root, text="开始合并PDF", command=start_merge, bg="#4CAF50", fg="white").pack(pady=10)
  108.    
  109.     root.mainloop()

  110. if __name__ == "__main__":
  111.     # 安装依赖提示(首次运行需执行)
  112.     try:
  113.         import PyPDF2
  114.     except ImportError:
  115.         print("正在安装依赖库 PyPDF2...")
  116.         os.system("pip install PyPDF2")
  117.         import PyPDF2
  118.    
  119.     main()
复制代码

代码使用说明
环境准备:
确保已安装 Python(3.7 及以上版本);
首次运行代码时,程序会自动安装依赖库 PyPDF2(若未安装),也可手动执行:
bash
运行
pip install PyPDF2
操作步骤:
运行代码,弹出图形化界面;
点击「选择文件夹」,选中存放待合并 PDF 的文件夹;
点击「开始合并 PDF」,输入合并后的文件名(无需加.pdf后缀);
等待程序处理完成,合并后的 PDF 会保存在你选择的文件夹中。
关键逻辑说明:
get_sorted_pdf_files:提取文件夹中的 PDF 文件,并按文件名中的数字序号排序(例如:1.pdf、2.pdf、10.pdf 会按 1、2、10 排序);
merge_pdfs_with_bookmarks:核心合并逻辑,每合并一个 PDF 就添加一个书签(目录项),书签名称为 PDF 文件名,跳转至该 PDF 的第一页;
图形化界面(tkinter):简化你输入路径和文件名的操作,无需手动修改代码。
总结
核心功能:按序号合并 PDF + 生成可点击的书签(左侧目录),点击目录项可跳转至对应 PDF 内容;
使用方式:运行代码→选文件夹→输文件名→完成合并,操作简单无需修改代码;
依赖:仅需安装PyPDF2库,兼容 Python3.7+,合并后的 PDF 自动保存在源文件夹中。
注意:若 PDF 文件加密或损坏,程序会给出警告并跳过该文件;排序逻辑优先提取文件名中的数字,无数字的文件会排在最后。
回复

使用道具 举报

6#
发表于 昨天 22:37 | 只看该作者
如果要求不是很高的话,直接选打印,再选每张纸打印多页。各个PDF软件不同,类似功能多试试看看。希望能帮到你。
回复

使用道具 举报

5#
 楼主| 发表于 昨天 22:16 | 只看该作者
a66 发表于 2026-2-24 22:12
  • Adobe Acrobat Pro DC:功能强大,支持多页PDF合并、裁剪、拼接等操作,适合专业用户。
  • PDF24 Too ...

  • ai的回答不要不能用
    回复

    使用道具 举报

    4#
    发表于 昨天 22:12 | 只看该作者
    • Adobe Acrobat Pro DC:功能强大,支持多页PDF合并、裁剪、拼接等操作,适合专业用户。
    • PDF24 Tools(在线工具):免费在线工具,可以轻松合并、拆分、旋转和调整PDF页面布局。
    • WPS Office:支持PDF合并与编辑,操作简单,适合日常使用。
    • PDFsam(PDF Split and Merge):开源免费软件,支持合并、拆分PDF文件,操作直观。

    点评

    ai的回答不要不能用  详情 回复 发表于 昨天 22:16
    回复

    使用道具 举报

    3#
     楼主| 发表于 昨天 22:02 | 只看该作者

    不行啊,我要单个pdf 123页码合并成一个页码这种工具
    回复

    使用道具 举报

    2#
    发表于 昨天 21:52 | 只看该作者
    PDFShaper

    点评

    不行啊,我要单个pdf 123页码合并成一个页码这种工具  详情 回复 发表于 昨天 22:02
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

    闽公网安备 35020302032614号

    GMT+8, 2026-2-25 07:46

    Powered by Discuz! X3.3

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表