You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PyPDF2写入内容到新PDF?相关类与方法疑问求解

嘿,我来帮你理清PyPDF2的这些用法问题!

1. PdfFileReader能不能用来写入PDF?

完全不行哦!PdfFileReader这个类的设计目的只是读取和解析已有的PDF文件——比如提取文本、获取页面信息、复制页面内容等等,它没有任何写入或创建新PDF的功能。要写入PDF,你确实应该用PdfFileWriter,但得用对方法~

2. PdfFileWriter的write()函数用法,以及你的代码问题

先看你写的代码,有两个关键错误:

  • 打开PDF文件时要用二进制写入模式'wb',而不是普通的'w',因为PDF是二进制格式文件;
  • writer.write()接收的参数不是文本字符串,而是已经以二进制模式打开的文件对象,而且PdfFileWriter本身不能直接写入纯文本——它是用来管理PDF页面的工具,要添加文本内容需要额外步骤。

正确的PyPDF2基础用法(创建空白PDF并写入)

如果只是要创建一个空白PDF,代码应该是这样的:

import PyPDF2

# 创建PdfFileWriter实例
writer = PyPDF2.PdfFileWriter()

# 创建一个空白页面(参数是宽和高,这里是标准A4的尺寸:612x792点)
blank_page = PyPDF2.PageObject.createBlankPage(width=612, height=792)
# 将空白页面添加到writer中
writer.addPage(blank_page)

# 以二进制写入模式打开文件,然后调用write方法
with open('result.pdf', 'wb') as pdf_file:
    writer.write(pdf_file)

但要添加你想要的文本内容,PyPDF2不太方便

PyPDF2的强项是处理已有PDF的页面(比如合并、拆分),但它没有直接的“添加文本”方法,要实现这个需求,更推荐用专门生成PDF的库,比如ReportLab,代码会简单很多:

from reportlab.pdfgen import canvas

# 创建一个PDF画布
pdf_canvas = canvas.Canvas("result.pdf")

# 在指定位置写入文本(参数是x坐标、y坐标、文本内容)
pdf_canvas.drawString(100, 750, "sdfdf = 123")
pdf_canvas.drawString(100, 730, "ffwfwe = 456")
pdf_canvas.drawString(100, 710, "fefwg = 34%")

# 保存PDF
pdf_canvas.save()

这样就能直接生成包含你要的文本的PDF文件啦~

内容的提问来源于stack exchange,提问作者Pankaj Kalania

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:41:08