练手代码之使用Python实现合并PDF文件

如果你有合并PDF的需要,你会怎么办

我们无所不能的程序员会选择写一个Python代码来实现(谁会这么无聊?是我),如果真的有PDF操作需要,我推荐你使用PDF Expert这个软件哈~

话不多说直接上代码:

import os
import PyPDF2
from tkinter import Tk
from tkinter.filedialog import askopenfilenames

def combine_pdfs(input_files, output_file):
    pdf_merger = PyPDF2.PdfMerger()
    
    try:
        for file_path in input_files:
            if not os.path.exists(file_path):
                raise FileNotFoundError(f"The file {file_path} does not exist.")
            with open(file_path, 'rb') as f:
                pdf_merger.append(f)
        
        output_dir = os.path.dirname(output_file)
        if output_dir and not os.path.exists(output_dir):
            os.makedirs(output_dir)
        
        with open(output_file, 'wb') as f:
            pdf_merger.write(f)
        print("合并成功")
    except Exception as e:
        print("合并PDF时出现错误:", str(e))
        raise

def get_file_paths():
    Tk().withdraw() # 不显示Tkinter的根窗口
    file_paths = askopenfilenames(filetypes=[("PDF files", "*.pdf")])
    return file_paths

input_files = get_file_paths()

if len(input_files) < 2:
    print("请选择至少两个PDF文件进行合并。")
else:
    # 组合文件命名
    output_file = "combined_pdfs.pdf"
    try:
        combine_pdfs(input_files, output_file)
    except FileNotFoundError as e:
        print(e)

运行之后弹窗选择两个PDF文件即可,会自动输出在根目录 

 

结束

By the way,我的博客:https://wcowin.work/ 

欢迎来撩~

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 使用 Python 合并 PDF 文件可以使用 PyPDF2 库。 安装 PyPDF2: ``` pip install pypdf2 ``` 示例代码: ```python import os import glob from PyPDF2 import PdfFileReader, PdfFileWriter # 列出所有 PDF 文件 pdf_files = glob.glob('*.pdf') # 创建一个输出文件 output = PdfFileWriter() # 遍历所有 PDF 文件,并将其内容添加到输出文件中 for file in pdf_files: with open(file, 'rb') as f: input_pdf = PdfFileReader(f) # 将所有页面添加到输出文件中 for page in range(input_pdf.getNumPages()): output.addPage(input_pdf.getPage(page)) # 将输出文件写入磁盘 with open('output.pdf', 'wb') as f: output.write(f) ``` 在这段代码中,我们首先使用 glob 库列出当前目录中的所有 PDF 文件。然后,我们使用 PyPDF2 库中的 PdfFileWriter 类创建了一个输出文件。接下来,我们使用循环遍历所有 PDF 文件,并使用 PdfFileReader 类将其读入内存。最后,我们使用 addPage 方法将每个 PDF 文件的每一页添加到输出文件中。最后,我们使用 write 方法将输出文件写入磁盘。 希望这对你有帮助! ### 回答2: 要使用Python合并PDF文件,我们可以使用PyPDF2库。首先,确保已经安装了PyPDF2库。 下面是一个简单的Python代码示例来合并两个PDF文件: ```python import PyPDF2 def merge_pdfs(pdf1_path, pdf2_path, output_path): # 创建一个空的PDF写入对象 output_pdf = PyPDF2.PdfFileWriter() # 打开第一个PDF文件并将其添加到输出PDF对象 with open(pdf1_path, 'rb') as pdf1_file: pdf1 = PyPDF2.PdfFileReader(pdf1_file) for page_num in range(pdf1.getNumPages()): output_pdf.addPage(pdf1.getPage(page_num)) # 打开第二个PDF文件并将其添加到输出PDF对象 with open(pdf2_path, 'rb') as pdf2_file: pdf2 = PyPDF2.PdfFileReader(pdf2_file) for page_num in range(pdf2.getNumPages()): output_pdf.addPage(pdf2.getPage(page_num)) # 将合并后的PDF写入到输出文件中 with open(output_path, 'wb') as output_file: output_pdf.write(output_file) # 调用合并函数 merge_pdfs('pdf1.pdf', 'pdf2.pdf', 'merged.pdf') ``` 在以上代码中,我们首先创建了一个空的PDF写入对象。然后,依次打开每个要合并PDF文件,并将它们的页面逐一添加到输出PDF对象中。最后,将合并后的PDF写入到输出文件中。 你只需将pdf1.pdfpdf2.pdf替换为你要合并的实际PDF文件的路径,并将merged.pdf替换为输出文件的路径。 ### 回答3: 要合并PDF文件,可以使用Python的PyPDF2库。下面是一个示例代码: ```python from PyPDF2 import PdfFileMerger def merge_pdfs(output_path, *input_paths): merger = PdfFileMerger() for path in input_paths: merger.append(path) merger.write(output_path) merger.close() # 指定输出路径和需要合并PDF文件路径 output_path = '合并后的文件.pdf' input_paths = ['文件1.pdf', '文件2.pdf', '文件3.pdf'] merge_pdfs(output_path, *input_paths) ``` 以上代码首先导入了`PdfFileMerger`类,并定义了一个`merge_pdfs`函数来执行合并操作。函数接受两个参数,分别是输出路径和需要合并PDF文件路径列表。 函数通过创建一个`PdfFileMerger`实例,并使用`append`方法逐个将输入路径的PDF文件添加到合并器中。 最后,通过调用`write`方法将合并后的PDF保存到指定的输出路径,并关闭合并器。 你可以自行替换`output_path`和`input_paths`变量的值来指定输出文件和要合并PDF文件路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wcowin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值