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

相关推荐
子兮曰11 小时前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰11 小时前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
默_笙12 小时前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
前端小万12 小时前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝12 小时前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
qq_4260039612 小时前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫12 小时前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
三十而立洋12 小时前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
长沙三为智能科技12 小时前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读13 小时前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python