深入学习Python解析并解密PDF文件内容的方法(5)

def addBlankpage(): readFile = 'C:/study.pdf' outFile = 'C:/copy.pdf' pdfFileWriter = PdfFileWriter() # 获取 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'))

  结果是:在写入的 copy.pdf 文档的最后最后一页写入了一个空白页。

分割文档(取第五页之后的页面)

def splitPdf(): readFile = 'C:/learn.pdf' outFile = 'C://copy.pdf' pdfFileWriter = PdfFileWriter() # 获取 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) # 最后,统一写入到输出文件中 pdfFileWriter.write(open(outFile, 'wb'))

 PageObject类

class PyPDF2.pdf.PageObject(pdf = None,indirectRef = None )

此类表示 PDF 文件中的单个页面,通常这个对象是通过访问 PdfFileReader 对象的 getPage() 方法来得到的,也可以使用 createBlankPage() 静态方法创建一个空的页面。

参数:

pdf : 页面所属的 PDF 文件。

indirectRef:将源对象的原始间接引用存储在其源 PDF 中。

PageObject 对象的属性和方法 属性或方法描述
static createBlankPage(pdf=None,width=None,height=None)   返回一个新的空白页面  
extractText()   找到所有文本绘图命令,按照他们在内容流中提供的顺序,并提取文本  
getContents()   访问页面内容,返回 Contents 对象或 None  
rotateClockwise(angle)   顺时针旋转 90 度  
scale(sx,sy)   通过向其内容应用转换矩阵并更新页面大小  
粗略读取PDF文本内容

def getPdfContent(filename): pdf = PdfFileReader(open(filename, "rb")) content = "" for i in range(0, pdf.getNumPages()): pageObj = pdf.getPage(i) extractedText = pageObj.extractText() content += extractedText + "\n" # return content.encode("ascii", "ignore") return content

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/326c69ad83386fe7634601de1c129360.html