python——pdf编辑

常见库

1 读写文档

python 复制代码
from pypdf import PdfWriter
PdfWriter是保存pdf文档
writer = PdfWriter()
# A4纸张尺寸,单位pt
writer.add_blank_page(width=595.276, height=841.89)
writer.add_blank_page() #添加一个空白页

with open("test_pdf/test.pdf", "wb") as f:  #在test_pdf的文件夹下新建一个test.pdf
    writer.write(f)

2 操作界面-合并

把测试文档1.pdf的内容写到空白的test.pdf里

方法一:for循环读取文档的几页写到空白文档

python 复制代码
# PdfReader是读取pdf文档
# 打开指定路径下的【测试文档1.pdf】,读取PDF文档内容
reader = PdfReader("./test_pdf/测试文档1.pdf")

# reader.pages 是PDF所有页的集合;len()获取页数,打印输出文档总页数
print(len(reader.pages)) #看一下有几页

# 创建PDF写入器对象,用来组装、生成新的PDF文件
writer = PdfWriter()

# 切片 pages[:2] 取**索引0、1**,也就是原文档的前2页;循环遍历这两页
for page in reader.pages[:2]:
    # 打印page变量的数据类型,page是pypdf的PageObject页面对象
    print(type(page))
    # 把读取到的页面,添加到新PDF的写入器中(加入新文档)
    writer.add_page(page)

# 将writer中组装好的页面,写入磁盘,生成新文件 test_pdf/test.pdf
# pypdf支持直接传文件路径字符串,内部自动帮你打开、关闭文件
writer.write("test_pdf/test.pdf")

方法二:writer.append("./test_pdf/测试文档1.pdf") #直接.append(指定路径下的文档)

python 复制代码
from pypdf import PdfReader, PdfWriter

# PdfReader是读取pdf文档
# 打开指定路径下的【测试文档1.pdf】,读取PDF文档内容
reader = PdfReader("./test_pdf/测试文档1.pdf")

# reader.pages 是PDF所有页的集合;len()获取页数,打印输出文档总页数
print(len(reader.pages)) #看一下有几页

# 创建PDF写入器对象,用来组装、生成新的PDF文件
writer = PdfWriter()
writer.append("./test_pdf/测试文档1.pdf") #直接.append(指定路径下的文档)
writer.append("./test_pdf/测试文档2.pdf")

# 将writer中组装好的页面,写入磁盘,生成新文件 test_pdf/test.pdf
# pypdf支持直接传文件路径字符串,内部自动帮你打开、关闭文件
writer.write("test_pdf/test.pdf")

方法三:merge

但是merge已经用writer替代了

3 旋转文档

python 复制代码
from pypdf import PdfReader, PdfWriter

# 读取源PDF文件
reader = PdfReader("test_pdf/测试文档1.pdf")
# 创建PDF写入对象,用于保存处理后的新pdf
writer = PdfWriter()

# 取出第0页(第一页),这行代码后面循环会覆盖这个page变量,实际没有使用
page = reader.get_page(0)

# 遍历PDF所有页码索引,range返回0,1,2...总页数-1
for i in range(reader.get_num_pages()):
    # 判断页码索引是否为偶数:0、2、4......(第1、3、5......实际页面)
    if i % 2 == 0:
        # 偶数索引页面:顺时针旋转90度
        page = reader.get_page(i).rotate(90)
    else:
        # 奇数索引页面:顺时针旋转-90度(等同于逆时针旋转90度)
        page = reader.get_page(i).rotate(-90)

    # ⚠️原截图代码缺失这一行!旋转后的page必须add_page加入writer,否则输出空白PDF
    writer.add_page(page)

# 打开输出文件,二进制写入模式,保存处理完成的pdf
with open("test_pdf/test.pdf", "wb") as f:
    writer.write(f)

参考链接

深度解析:Python中处理PDF的库有很多,我应该选择哪一个? - 知乎

Python 操作 PDF 文档:主流库选型指南 - E-iceblue - 博客园

07.提取内容_哔哩哔哩_bilibili

相关推荐
聪明蛋子哟1 小时前
多智能体协作的三种模式:从群聊到分层,如何设计可扩展的Agent系统
后端·python·flask
顶级自由人1 小时前
本地正常、线上正常,为什么一个 Hook 仍会报错?
前端·javascript·程序员
Android小行家1 小时前
Android APK 加固原理(五):SO `.text` 段加密、ELF 加载与运行时动态解密
前端
lerhxx1 小时前
R3F 第一人称漫游与碰撞检测:Pointer Lock + 不穿墙的滑墙秘诀(中)
前端·javascript·three.js
LSCLikeApple2 小时前
入门promise
前端
爬楼的猪2 小时前
DeepSeek Harness 本地安装和对话过程的网络问题
前端
labixiong2 小时前
button按钮原生开关弹窗,零 JS 搞定80%交互场景
前端·javascript·html
MaiTube&Maipdf2 小时前
MaiPDF 在线分享
pdf
悟空瞎说2 小时前
Vue3 应用实例 API
前端