pypdf,一个强大的PDF文档操作python库!

大家好,今天为大家分享一个强大的PDF文档操作python库 - pypdf。

github地址:https://github.com/py-pdf/pypdf

文档地址:https://pypdf.readthedocs.io/en/latest/

PYPDF是一个免费和开放的 source pure-python 能够拆分的 PDF 库, 合并、裁剪和转换 PDF 文件的页面。它还可以添加 自定义数据、查看选项和 PDF 文件的密码。 pypdf 也可以从 PDF 中检索文本和元数据。

pypdf的前世今生

准备使用python处理pdf文件的朋友会发现,有一系列名称类似的库:pyPdf、PyPDF2、PyPDF3、PyPDF4以及pypdf(这个和第一个库不是重复,注意字母大小写)的库,傻傻分不清,这些库难道只是版本不同而已吗?是不是pypdf4是最新的?到底适合选用哪个库?满眼都是小星星。

  • 2005年,pyPdf (注意中间的p为大写)诞生,最后一次更新为2010年
  • 2011年,PyPDF2(注意大小写)诞生,为pyPdf的分支,但功能方面并不一致,最后的版本更新时间为2016年
  • 2018年,PyPDF3和PyPDF4诞生,是两个并不怎么流行的库,其中PyPDF3最后更新时间为2022年2月,PyPDF4只在2018年发布过一个版本
  • 2022年,PyPDF2重生,有新的作者接手PyPDF2的维护,解决了大量的问题,最后更新2022年12月
  • 2023年,合并重生,PyPDF2合并至pypdf(全部小写)

截止这篇文章pypdf的版本号为4.0.1!

安装

pypdf 需要 Python 3.7+ 才能运行。

pip install pypdf

操作元数据

读取元数据

from pypdf import PdfReader

reader = PdfReader("example.pdf")

meta = reader.metadata

print(len(reader.pages))

# All of the following could be None!
print(meta.author)
print(meta.creator)
print(meta.producer)
print(meta.subject)
print(meta.title)

写入元数据

from datetime import datetime
from pypdf import PdfReader, PdfWriter

reader = PdfReader("example.pdf")
writer = PdfWriter()

# Add all pages to the writer
for page in reader.pages:
    writer.add_page(page)

# If you want to add the old metadata, include this line
metadata = reader.metadata
writer.add_metadata(metadata)

# Format the current date and time for the metadata
utc_time = "-05'00'"  # UTC time optional
time = datetime.now().strftime(f"D\072%Y%m%d%H%M%S{utc_time}")

# Add the new metadata
writer.add_metadata(
    {
        "/Author": "Martin",
        "/Producer": "Libre Writer",
        "/Title": "Title",
        "/Subject": "Subject",
        "/Keywords": "Keywords",
        "/CreationDate": time,
        "/ModDate": time,
        "/Creator": "Creator",
        "/CustomField": "CustomField",
    }
)

# Save the new PDF to a file
with open("meta-pdf.pdf", "wb") as f:
    writer.write(f)