首页 > 编程语言 >使用 5 行 Python 代码拆分或合并 PDF 文件

使用 5 行 Python 代码拆分或合并 PDF 文件

时间:2024-04-06 18:29:18浏览次数:29  
标签:文件 PdfFileReader output Python 拆分 pdf PDF 页面

目录:


如果希望从大型 PDF 文件中提取特定页面或将多个 PDF 文件合并为一个文件,可以使用一些 PDF 编辑器来完成,但是你可能会发现拆分或合并功能在很多免费版 PDF 编辑工具中通常不可用。在本文中,我将分享一个简单的解决方案,用几行 Python 代码拆分或合并多个 PDF 文件。

Python 中的 PyPDF3 库提供了读取、合并、写入 pdf 文件的类,方便程序员完成 Pdf 文件的处理操作。

  • PdfFileReader: 用于执行与读取文件相关的所有操作。
  • PdfFileMerger: 用于将多个 pdf 文件合并在一起。
  • PdfFileWriter: 用于对 pdf 执行写入操作。

使用 PyPDF3 处理 Pdf 文件,需要在工作环境中安装此库。

pip install PyPDF3

拆分 PDF 文件

想从 PDF 文件中提取特定页面并使其成为单独的 PDF 文件时,可以使用 PdfFileReader 读取原始文件,然后获取特定页面(页码从 0 开始)。使用 PdfFileWriter 的 addPage() 方法将 PDF 页面添加到新的 PDF 中并保存。

下面的示例代码中,从“1.Pdf”提取第一页,并将其存储到一个名为“2.pdf” 的 PDF 文件中。

from PyPDF3 import PdfFileWriter, PdfFileReader
input_pdf = PdfFileReader("1.pdf")
output = PdfFileWriter()
output.addPage(input_pdf.getPage(0))
with open("2.pdf", "wb") as out:
    output.write(out)

拓展

可以使用 getNumPages() 方法,获取 Pdf 中的页码,灵活的进行页面处理。

下面的示例代码中,从“1.Pdf”分别提取偶数页和奇数页,并将其分别存储到“2.pdf”和“3.pdf”中。

from PyPDF3 import PdfFileWriter, PdfFileReader
input_pdf = PdfFileReader("1.pdf")
output2 = PdfFileWriter()
output3 = PdfFileWriter()
for page in range(input_pdf.getNumPages()):
    current_page = input_pdf.getPage(page)
    if page % 2 == 0:
        output2.addPage(current_page)
    else:
        output3.addPage(current_page)
with open("2.pdf", "wb") as out:
     output2.write(out)
with open("3.pdf", "wb") as out:
     output3.write(out)

合并 PDF 文件

要将多个 PDF 文件合并为一个文件,可以使用 PdfFileMerger 来实现。虽然也可以使用 PdfFileWriter,但是当在合并页面之前不需要编辑页面时,PdfFileMerger 可能更直接。

下面示例代码中,使用 PdfFileMerger 的 append() 方法将多个 PDF 文件合并写入一个名为 merged.pdf 的 PDF 文件中。

from PyPDF3 import PdfFileReader, PdfFileMerger
pdf_file1 = PdfFileReader("1.pdf")
pdf_file2 = PdfFileReader("2.pdf")
output = PdfFileMerger()
output.append(pdf_file1)
output.append(pdf_file2)
with open("3.pdf", "wb") as out:
    output.write(out)

如果不想包含原始文件中的所有页面,可以指定一个具有起始页码和结束页码的元组作为 append() 的页面参数,以便仅将指定的页面添加到新 PDF 文件中。

output.append(pdf_file1, (0, 10)) # 前十页

append() 是在文件最后添加新页面,如果想指定要放入页面的位置,则应使用 merge(),允许指定要添加的页面的位置。

标签:文件,PdfFileReader,output,Python,拆分,pdf,PDF,页面
From: https://blog.csdn.net/anyes/article/details/137323594

相关文章

  • Python 潮流周刊第 45 期(摘要)+ 赠书 5 本《Python语言及其应用(第2版)》
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。周刊全文:https://pythoncat.top/posts/2024-04-06-weekly特别提醒:本期赠书5......
  • 使用Python插入100万条数据到MySQL数据库并将数据逐步写出到多个Excel
    Python插入100万条数据到MySQL数据库步骤一:导入所需模块和库首先,我们需要导入MySQL连接器模块和Faker模块。MySQL连接器模块用于连接到MySQL数据库,而Faker模块用于生成虚假数据。importmysql.connector#导入MySQL连接器模块fromfakerimportFaker#导入......
  • Python 语法检查、格式化工具 Ruff 的各项配置
    一、配置文件1.1配置文件的位置和优先级Ruff支持pyproject.toml、ruff.toml和.ruff.toml三种文件(同时出现时,右边的优先级高);最近的配置文件生效,父级的将被忽略;可使用extend继承其他配置;命令行指定参数时,会覆盖配置文件中的选项(即命令行优先级更高);可使用target-ver......
  • 入门级Python编程题(6)
    题目描述现在有 �t 毫升肥宅快乐水,要均分给 �n 名同学。每名同学需要 22 个杯子。现在想知道每名同学可以获得多少毫升饮料(严格精确到小数点后 33 位),以及一共需要多少个杯子。输入格式输入一个实数 �t 和一个正整数 �n,使用空格隔开。输出格式输出两行。第一行输出......
  • Python中列表处理
    在python数据处理中,很多数据类型都可以转化为列表进行处理,因此熟练掌握如何处理例表里的数据是一件很重要的事情。首先插入一张关于列表类型特有的函数和方法:在此,我要补充一下list.sort()函数,如果函数里没有数据默认就是将列表数据进行升序,若里面数据reverse=True则是降序,可以......
  • 150行Python代码模拟太阳系行星运转
    今天我们用Python来模拟一下太阳系行星运动轨迹~先上成品图(运行效果含音乐的呦)想要实现这样的效果并不难准备材料首先我们需要准备这样一些材料宇宙背景图背景透明的行星图 编写代码代码分块详解导入需要的模块import pygame  import sys ......
  • Python哪种方式循环最快,或许颠覆你的认知!
    众所周知,Python不是一种执行效率较高的语言。此外在任何语言中,循环都是一种非常消耗时间的操作。假如任意一种简单的单步操作耗费的时间为1个单位,将此操作重复执行上万次,最终耗费的时间也将增长上万倍。while 和 for 是Python中常用的两种实现循环的关键字,它们的运行......
  • CAT809JTBI-GT3中文资料规格书PDF数据手册引脚图产品参数特性概述
    产品概述:CAT809是一款µP监督电路,监控数字系统中的电源。CAT809可在基于工业温度范围运行的应用中直接替代MAX809。此器件会产生重置信号,当电源电压降至阈值阈值以下且电源升至该水平140ms之后发出该信号。安森美半导体使用的底层浮动门极技术AE²™可用于提供任......
  • MC14516BDR2G倒数计数器芯片中文资料PDF数据手册参数引脚图图片特性概述
    产品概述:MC14516B同步正数/倒数二进制计数器在一个单片结构中使用MOSP沟道和N沟道增强模式器件构造。此计数器可通过对预设输入(P0、P1、P2、P3)应用所需的二进制值,然后将预设启用(PE)置于高电平,来进行预设。计数方向通过向UP/DOWN输入应用高电平(用于正数)或低电平(用于......
  • python的垃圾回收
    引用计数器为主,标记清除和分代回收为辅1引用计数器在python程序运行时,会根据数据类型的不同找到其对应的结构体,根据结构体中的字段来进行创建相关的数据,然后将对象添加到refchain双像链表中,每个对象中的ob_refcnt就是引用计算器,值默认是为1,当有其他的变量引用对象时,引用......