引言
pypdf2有打开文件和保存文件的操作。pypdf2的读和写是两个不同的对象,PdfReader对象用于读取PDF文件,即打开一个PDF文档,PdfWriter对象用于写入文件,即保存文档到硬盘。
还是先看一下保存文档的代码吧:
from PyPDF2 import PdfWriter
writer = PdfWriter()
writer.add_blank_page(595.27,841.89)
writer.add_blank_page()
with open("./pdf_ files/test.pdf","wb") as f:
writer.write(f)
保存文档需要一个PdfWriter对象,但是只创建一个PdfWriter对象还不够,因为一个PDF文档至少要有一个页面,所以我们这里调用PdfWriter对象的add_blank_page()方法新增空白页面。
add_blank_page()方法可以传入页面的宽度和高度,宽高都是整型或浮点型,如果不指定这两个参数,则会使用上一页的宽高。但本例中是一个全新的文档,第一次调用add_blank_page()之前还不存在其他页面,所以此处必须要指定宽高,我传入的是A4纸大小的宽高值,我们晚点再讨论这个值怎么来的。
PdfWriter对象的write()方法可以保存文档,参数是一个流文件对象,我们这里直接给它一个文件描述符即可,为了避免忘记关闭文件描述符,所以还是使用上下文管理器的方式吧。
还需要注意的是,文件描述符的模式要选择“wb”,有关读写模式的知识点应该有点忘了吧?不太记得没关系,你要是说完全没印象就不太给面子了哈。读写模式中的“w”是指覆盖写入(字符串),但PDF数据不是纯文本,所以我们要使用二进制写入,即还要使用“b”,既要覆盖又要二进制读写,所以要设置为“wb”模式。