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

相关推荐
阿琳a_5 分钟前
b-map-viewer:面向 Vue 3 的地图可视化 SDK,从接入到展示再到交互分析
前端·javascript·vue.js·gis·数据可视化·地图
FinelyYang11 分钟前
uniapp使用kkfileview在线预览ppt,excel,word,pdf类型文件
pdf·uni-app·powerpoint
10年前端老司机14 分钟前
Agent 商业化困局:热闹的发布会,冷清的付费客户
前端·后端·agent
青少儿编程课堂16 分钟前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会Scratch考级:校园成语接龙大挑战解析
c++·python·算法·bfs·信息学竞赛
用户03321266636718 分钟前
使用 Python 扁平化 PDF 文档 【附代码示例】
python
Java后端的Ai之路18 分钟前
Java并发编程07-等待通知机制优化循环等待
java·数据库·python
小小张说故事19 分钟前
Python 的 async def 为什么能同时跑几千个任务?拆开协程对象、await 与事件循环那次让出
后端·python
钱栈up21 分钟前
热榜上手|HyperFrames:写HTML出MP4
前端·html
Sailing32 分钟前
🚀🚀【封闭结束8】Agent RAG:从零搭建一个可用知识库
前端·后端·agent
Captain1314_李祖团39 分钟前
5. MLIR相关语法
java·前端·javascript