利用python處理pdf:奇數頁pdf末尾添加一個空白頁
之前這裡提到使用PyPDF2模塊怎樣暴力破解pdf密碼,如何旋轉頁面,提取pdf內文字等等應用。pdf在工作中的應用非常廣泛,用好PyPDF2模塊可以幫你剩下不少的時間。其中有一個應用不需要太複雜的代碼,但是卻又很重要:
比如現在你的標書附件有18個文件,這些文件有些是偶數頁的,但有些又是奇數頁的。正常來說每一個附件的第一頁都最好是位於奇數頁,所以在我們合併pdf以前,最好先將所有奇數頁的pdf後面補一個空白頁,這樣列印起來就比較好看。
一般來說在比較專業一點的圖文店裡,店小二會用acrobat的一些插件來解決這個需求。但是實際上是用PyPDF2這個模塊也完全可以搞定。在使用下面的代碼以前,有幾個先決條件要滿足:
- 搞一個空白頁pdf
- 已經pip install PyPDF2
如果只是添加空白頁,那你並不需要acrobat專業版
代碼
import os,PyPDF2,pyperclippathofcwd = r"D:junming zhengCloudStation..."# ^ 需要處理的pdf存放位置class pdfReader: # ^ 處理pdf的一個類,把和pdf處理有關的代碼都放在這裡了 blankPdfPath = rD:junming zhengsmallToolsGitsmallToolspdfSmallToolslank.pdf # ^ 空白頁pdf存放位置 def __init__(self,pdfPath): self.pdfPath = pdfPath self.blankPageFile, self.blankPage = self.openAndReadit(self.blankPdfPath) self.pdfFile, self.pdfReader = self.openAndReadit(self.pdfPath) def openAndReadit(self,pdfpath): """ generate the pdfReader object for given path in parameter """ pdfFile = open(pdfpath, rb) pdfReader = PyPDF2.PdfFileReader(pdfFile) return (pdfFile,pdfReader) def appendBlank(self): """ no para, return a pdf writer with blankPage appended """ pdfWriter = PyPDF2.PdfFileWriter() for pageNum in range(self.pdfReader.numPages): pageObj = self.pdfReader.getPage(pageNum) pdfWriter.addPage(pageObj) # add the blank page: pdfWriter.addPage(self.blankPage.getPage(0)) return pdfWriter def closeAllFile(self): self.blankPageFile.close() self.pdfFile.close()os.chdir(pathofcwd)fileList = os.listdir()pdfList = filter( lambda e:os.path.splitext(e)[1]==.pdf, fileList)# ^ 過濾文件列表,只保留pdfpdfReaderList = map( lambda e:pdfReader(e), pdfList)# ^ 根據pdf文件路徑生成pdfReader類pdfReaderList = filter( lambda e: e.pdfReader.numPages % 2 == 1, pdfReaderList)# ^ 只保留奇數頁pdf的pdfReader類pdfReaderList = list(pdfReaderList)for pdfReader in pdfReaderList: pdfAddBlankWriter = pdfReader.appendBlank() outputPath = os.path.splitext(pdfReader.pdfPath)[0]+_addBlank+.pdf pdfOutputFile = open(outputPath,wb) pdfAddBlankWriter.write(pdfOutputFile) pdfOutputFile.close() pdfReader.closeAllFile() print("preparing to output as:%s" % outputPath)
空白頁pdf如果不清楚應該怎麼生成,可以去這裡下載
推薦閱讀:
※向csv新增內容
※小白學數據:教你用Python實現簡單監督學習演算法
※用VScode配置Python開發環境
※如何在阿里ECS雲端運行Jupyter Notebook進行機器/深度學習?
※Flask源碼閱讀筆記(四)