无忧启动论坛

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

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

[复制链接]
跳转到指定楼层
1#
发表于 昨天 21:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2#
发表于 昨天 21:52 | 只看该作者
PDFShaper

点评

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

使用道具 举报

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

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

使用道具 举报

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

点评

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

使用道具 举报

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

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

    使用道具 举报

    6#
    发表于 昨天 22:37 | 只看该作者
    如果要求不是很高的话,直接选打印,再选每张纸打印多页。各个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 文件加密或损坏,程序会给出警告并跳过该文件;排序逻辑优先提取文件名中的数字,无数字的文件会排在最后。
    回复

    使用道具 举报

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

    使用道具 举报

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

    使用道具 举报

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

    使用道具 举报

    11#
    发表于 5 小时前 | 只看该作者
    QQQQQQQIU
    回复

    使用道具 举报

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

    本版积分规则

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

    闽公网安备 35020302032614号

    GMT+8, 2026-2-25 06:24

    Powered by Discuz! X3.3

    © 2001-2017 Comsenz Inc.

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