用于转换 PDF 文件的开源 Python 库
免费的 Python API 允许开发人员导出、旋转、合并和连接 PDF 文件,从 PDF 中提取数据和元素。
pdfrw 入门
pdfrw 需要 Python 2.6、2.7、3.3、3.4、3.5 和 3.6。您可以使用 pip 安装 pdfrw。请使用以下命令进行安装。
通过 pip 安装 pdfrw
python -m pip install pdfrw
通过 Python 库创建 PDF 文档
pdfrw 库为软件开发人员提供了在他们自己的 Python 应用程序中创建 PDF 文档的能力,只需几行代码。该库还支持访问和修改现有 PDF 文件。您可以轻松地将新页面以及图形组件或文本元素插入到现有 PDF 中。 pdfrw 库支持查找您读入的 PDF 文件中的页面,并将一组页面写回新的 PDF 文件。
通过 Python 创建和更改 PDF 文档
// PDF Documents Creation
import sys
import os
from pdfrw import PdfReader, PdfWriter
inpfn, = sys.argv[1:]
outfn = 'alter.' + os.path.basename(inpfn)
trailer = PdfReader(inpfn)
trailer.Info.Title = 'My New Title Goes Here'
PdfWriter(outfn, trailer=trailer).write()
通过 Python 读取 PDF 文件
pdfrw 库使软件开发人员能够轻松访问和阅读 Python 应用程序中 PDF 文档的不同部分。它可以轻松访问整个 PDF 文档。该库支持检索文件信息、大小等。它创建了一个名为 pages 的特殊属性,允许用户列出 PDF 文档的所有页面。它允许您提取文档信息对象,您可以使用该对象提取作者、标题等信息。
通过 Python 访问和读取 PDF 文件
// Reading PDF Files
from pdfrw import pdfreader
def get_pdf_info(path):
pdf = pdfreader(path)
print(pdf.keys())
print(pdf.info)
print(pdf.root.keys())
print('pdf has {} pages'.format(len(pdf.pages)))
if __name__ == '__main__':
get_pdf_info('w9.pdf')
添加或修改元数据
pdfrw 允许软件开发人员在他们自己的 Python 应用程序中添加或修改 PDF 文件的元数据。您可以更改 PDF 中的单个元数据项,将结果写入新的 PDF,也可以包含多个文件,并在将一些无意义的元数据添加到输出 PDF 文件后将它们连接起来。
通过 Python 修改 PDF 元数据
// Modifying PDF Metadata
import sys
import os
from pdfrw import PdfReader, PdfWriter
inpfn, = sys.argv[1:]
outfn = 'alter.' + os.path.basename(inpfn)
trailer = PdfReader(inpfn)
trailer.Info.Title = 'My New Title Goes Here'
PdfWriter(outfn, trailer=trailer).write()
拆分 PDF 文档
pdfrw 允许软件开发人员在其应用程序中以编程方式拆分 PDF 文档文档。用户可能需要提取 PDF 书籍的特定部分或将其分成多个 PDF,而不是将它们存储在一个文件中。使用 pdfrw 库非常简单,您只需要提供输入 PDF 文件路径、要提取的页数和输出路径。
通过 Python 将 PDF 文件拆分为多个 PDF
// Splitting PDF file into multiple pdfs
from pdfrw import pdfreader, pdfwriter
def split(path, number_of_pages, output):
pdf_obj = pdfreader(path)
total_pages = len(pdf_obj.pages)
writer = pdfwriter()
for page in range(number_of_pages):
if page <= total_pages:
writer.addpage(pdf_obj.pages[page])
writer.write(output)
if __name__ == '__main__':
split('reportlab-sample.pdf', 10, 'subset.pdf')