前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python pypdf2

python pypdf2

作者头像
用户5760343
发布2022-05-13 11:15:38
5210
发布2022-05-13 11:15:38
举报
文章被收录于专栏:sktjsktj

1、读写PDF from PyPDF2 import PdfFileReader, PdfFileWriter readFile = 'read.pdf' writeFile = 'write.pdf' pdfReader = PdfFileReader(open(readFile, 'rb')) pageCount = pdfReader.getNumPages() print(pageCount) i=2 page = pdfReader.getPage(i) pdfWriter = PdfFileWriter() pdfWriter.addPage(page) pdfWriter.write(open(writeFile, 'wb'))

2、合并分割PDF from PyPDF2 import PdfFileReader, PdfFileWriter def split_pdf(infn, outfn): pdf_output = PdfFileWriter() pdf_input = PdfFileReader(open(infn, 'rb')) # 获取 pdf 共用多少页 page_count = pdf_input.getNumPages() print(page_count) # 将 pdf 第五页之后的页面,输出到一个新的文件 for i in range(5, page_count): pdf_output.addPage(pdf_input.getPage(i)) pdf_output.write(open(outfn, 'wb')) def merge_pdf(infnList, outfn): pdf_output = PdfFileWriter() for infn in infnList: pdf_input = PdfFileReader(open(infn, 'rb')) # 获取 pdf 共用多少页 page_count = pdf_input.getNumPages() print(page_count) for i in range(page_count): pdf_output.addPage(pdf_input.getPage(i)) pdf_output.write(open(outfn, 'wb')) if name == 'main': infn = 'infn.pdf' outfn = 'outfn.pdf' split_pdf(infn, outfn) 3、追加:pdfWriter.appendPagesFromReader(reader) 书签:pdfWriter.addBookmark(title, pagenum, parent=parent)

4、PyPDF2.PdfFileReader(stream,strict = True,warndest = None,overwriteWarnings = True) stream:File 对象或支持与 File 对象类似的标准读取和查找方法的对象,也可以是表示 PDF 文件路径的字符串。 strict(bool): 确定是否应该警告用户所用的问题,也导致一些可纠正的问题是致命的,默认是 True warndest : 记录警告的目标(默认是 sys.stderr) overwriteWarnings(bool):确定是否 warnings.py 用自定义实现覆盖 Python 模块(默认为 True)


PdfFileReader 对象的属性和方法

属性和方法 描述 getDestinationPageNumber(destination) 检索给定目标对象的页码 getDocumentInfo() 检索 PDF 文件的文档信息字典 getFields(tree = None,retval = None,fileObj= None) 如果此 PDF 包含交互式表单字段,则提取字段数据, getFormTextFields() 从文档中检索带有文本数据(输入,下拉列表)的表单域 getNameDestinations(tree = None,retval= None) 检索文档中的指定目标 getNumPages() 计算此 PDF 文件中的页数 getOutlines(node = None,outline = None,) 检索文档中出现的文档大纲 getPage(pageNumber) 从这个 PDF 文件中检索指定编号的页面 getPageLayout() 获取页面布局 getPageMode() 获取页面模式 getPageNumber(pageObject) 检索给定 pageObject 处于的页码 getXmpMetadata() 从 PDF 文档根目录中检索 XMP 数据 isEncrypted 显示 PDF 文件是否加密的只读布尔属性 namedDestinations 访问该getNamedDestinations()函数的只读属性

用例:# encoding:utf-8 from PyPDF2 import PdfFileReader, PdfFileWriter

readFile = 'read.pdf'

获取 PdfFileReader 对象

pdfFileReader = PdfFileReader(readFile) # 或者这个方式:pdfFileReader = PdfFileReader(open(readFile, 'rb'))

获取 PDF 文件的文档信息

documentInfo = pdfFileReader.getDocumentInfo() print('documentInfo = %s' % documentInfo)

获取页面布局

pageLayout = pdfFileReader.getPageLayout() print('pageLayout = %s ' % pageLayout)

获取页模式

pageMode = pdfFileReader.getPageMode() print('pageMode = %s' % pageMode)

xmpMetadata = pdfFileReader.getXmpMetadata() print('xmpMetadata = %s ' % xmpMetadata)

获取 pdf 文件页数

pageCount = pdfFileReader.getNumPages()

print('pageCount = %s' % pageCount) for index in range(0, 2): # 返回指定页编号的 pageObject pageObj = pdfFileReader.getPage(index) print('index = %d , pageObj = %s' % (index, type(pageObj))) # <class 'PyPDF2.pdf.PageObject'> # 获取 pageObject 在 PDF 文档中处于的页码 pageNumber = pdfFileReader.getPageNumber(pageObj) print('pageNumber = %s ' % pageNumber) 7、PdfFileWriter 属性方法 属性和方法 描述 addAttachment(fname,fdata) 在 PDF 中嵌入文件 addBlankPage(width= None,height=None) 追加一个空白页面到这个 PDF 文件并返回它 addBookmark(title,pagenum,parent=None, color=None,bold=False,italic=False,fit=’/fit,args’) addJS(javascript) 添加将在打开此 PDF 是启动的 javascript addLink(pagenum,pagedest,rect,border=None,fit=’/fit’,args) 从一个矩形区域添加一个内部链接到指定的页面 addPage(page) 添加一个页面到这个PDF 文件,该页面通常从 PdfFileReader 实例获取 getNumpages() 页数 getPage(pageNumber) 从这个 PDF 文件中检索一个编号的页面 insertBlankPage(width=None,height=None,index=0) 插入一个空白页面到这个 PDF 文件并返回它,如果没有指定页面大小,就使用最后一页的大小 insertPage(page,index=0) 在这个 PDF 文件中插入一个页面,该页面通常从 PdfFileReader 实例获取 removeLinks() 从次数出中删除连接盒注释 removeText(ignoreByteStringObject = False) 从这个输出中删除图像 write(stream) 将添加到此对象的页面集合写入 PDF 文件

def addBlankpage(): readFile = 'C:/Users/Administrator/Desktop/RxJava 完全解析.pdf' outFile = 'C:/Users/Administrator/Desktop/copy.pdf' pdfFileWriter = PdfFileWriter()

代码语言:javascript
复制
# 获取 PdfFileReader 对象
pdfFileReader = PdfFileReader(readFile)  # 或者这个方式:pdfFileReader = PdfFileReader(open(readFile, 'rb'))
numPages = pdfFileReader.getNumPages()

for index in range(0, numPages):
    pageObj = pdfFileReader.getPage(index)
    pdfFileWriter.addPage(pageObj)  # 根据每页返回的 PageObject,写入到文件
    pdfFileWriter.write(open(outFile, 'wb'))

pdfFileWriter.addBlankPage()   # 在文件的最后一页写入一个空白页,保存至文件中
pdfFileWriter.write(open(outFile,'wb'))

分割文档 脚本 def splitPdf(): readFile = 'C:/Users/Administrator/Desktop/RxJava 完全解析.pdf' outFile = 'C:/Users/Administrator/Desktop/copy.pdf' pdfFileWriter = PdfFileWriter()

代码语言:javascript
复制
# 获取 PdfFileReader 对象
pdfFileReader = PdfFileReader(readFile)  # 或者这个方式:pdfFileReader = PdfFileReader(open(readFile, 'rb'))
# 文档总页数
numPages = pdfFileReader.getNumPages()

if numPages > 5:
    # 从第五页之后的页面,输出到一个新的文件中,即分割文档
    for index in range(5, numPages):
        pageObj = pdfFileReader.getPage(index)
        pdfFileWriter.addPage(pageObj)
    # 添加完每页,再一起保存至文件中
    pdfFileWriter.write(open(outFile, 'wb'))

合并文档: def mergePdf(inFileList, outFile): ''' 合并文档 :param inFileList: 要合并的文档的 list :param outFile: 合并后的输出文件 :return: ''' pdfFileWriter = PdfFileWriter() for inFile in inFileList: # 依次循环打开要合并文件 pdfReader = PdfFileReader(open(inFile, 'rb')) numPages = pdfReader.getNumPages() for index in range(0, numPages): pageObj = pdfReader.getPage(index) pdfFileWriter.addPage(pageObj)

代码语言:javascript
复制
    # 最后,统一写入到输出文件中
    pdfFileWriter.write(open(outFile, 'wb'))
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 获取 PdfFileReader 对象
  • 获取 PDF 文件的文档信息
  • 获取页面布局
  • 获取页模式
  • 获取 pdf 文件页数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档