如何合并多个PDF文件的两种方式(简单合并和有条件合并)

我们有的时候会需要把很多个PDF文件合并成一个文件,以方便快速统一处理。比如,你需要把几十个甚至上百个PDF打印出来,如果一个一个打印,效率自然不高,但如果把它们合并成一个文件一起打印,就会方便很多。通过下面代码可以轻松实现。这里介绍两种方式。(本文中代码为Python 3.8环境)

第一种:简单地把同一个文件夹下q的多个PDF,合并成一个文件。代码如下:

import os
from PyPDF2 import PdfMerger


# 指定待合并文件所在的路径
source_folder_path = r'C:\Input'
# 指定合并后的输出文件路径,如果不存在建立该路径
output_floder = r'C:\Output'
if not os.path.exists(output_floder):
    os.makedirs(output_floder)
output_file = r'C:\Output\CombinedPDFfile.pdf'

def merge_pdfs_in_folder(source_folder_path, output_filepath):
    pdf_merger = PdfMerger()

    # 遍历文件夹中的所有文件
    for filename in os.listdir(source_folder_path):
        if filename.endswith(".pdf"):
            full_filepath = os.path.join(source_folder_path, filename)
            with open(full_filepath, 'rb') as pdf_file:
                pdf_merger.append(pdf_file)

    with open(output_filepath, 'wb') as output_file:
        pdf_merger.write(output_file)


# 调用函数进行合并
merge_pdfs_in_folder(source_folder_path, output_file)
print(f"PDF文件合并完成,保存为:{output_file}")

第二种:有条件合并。有的PDF文件可能带有封面页,在合并多个这样类似的文件成为一个文件后会出现相同的封面页反复出现的情况。为了避免这样的情况,升级了第一种情况下的代码,使其更具灵活性。代码如下:

import PyPDF2, os

# 指定待合并文件所在的路径
source_folder_path = r'C:\Input'
# 指定合并后的输出文件路径
output_file = r'C:\Output\CombinedPDFfile.pdf'
pdfFiles = []

for filename in os.listdir(source_folder_path):
    if filename.endswith('.pdf'):
        pdfFiles.append(source_folder_path + '\\'+ filename)
        pdfFiles.sort(key=str.lower)

pdfWriter = PyPDF2.PdfWriter()

# 遍历文件夹中的所有文件
for filename in pdfFiles:
    pdfFileObj = open(filename, 'rb')
    pdfReader = PyPDF2.PdfReader(pdfFileObj)

    for pageNum in range(1, len(pdfReader.pages)):

        pageObj = pdfReader.pages[pageNum]

        pdfWriter.add_page(pageObj)

pdfOutput = open(output_file, 'wb')
pdfWriter.write(pdfOutput)
print(f"PDF文件合并完成,保存为:{output_file}")
pdfOutput.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值