<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Python 工程師在日常的工作中,經常會碰到解析和處理PDF檔案的情況,實戰中需求主要分為如下情況:
除了最後一項需要前端配合以外,其餘內容都可以直接在 python 端進行實現。
本次實戰選擇 pdfplumber
庫進行學習,可以提前安裝該庫,不過有一點需要注意,該庫主要用於讀取 PDF 進行操作,寫入和編輯無法實現,即本文學習一款專注於 PDF 內容提取的庫。
> pip install pdfplumber -i https://pypi.tuna.tsinghua.edu.cn/simple
pdfplumber
庫具備如下特點:
下面可以編寫 PDF 操作的基礎程式碼。
import pdfplumber with pdfplumber.open('./dddd.pdf') as pdf: for page in pdf.pages: print(page.extract_text()) # 每頁列印一分頁分隔 print('---------- 分頁分隔 ----------')
匯入 pdfplumber
模組之後,使用 pdfplumber.open('./dddd.pdf')
開啟本地 pdf 檔案,然後通過 pdf.pages
遍歷所有頁,在通過頁物件的 .extract_text()
方法,提取文字資訊。
pdfplumber.open() 方法的簽名如下所示:
pdfplumber.open("檔名", password = "密碼", laparams = { "line_overlap": 0.7 })
其中各引數描述如下:
file_name
:檔名,必選引數;password
:PDF的密碼;laparams
:佈局引數。除此之外,如果希望讀取 PDF,還可以使用 load()
方法,該方法也會返回 pdfplumber.PDF
類的範例。
pdfplumber.PDF
物件範例,主要有兩個重要屬性:
.metadata
:從PDF的Info中獲取後設資料鍵 /值對字典。 通常包括“ CreationDate”,“ ModDate”,“ Producer”等;.pages
:包含 pdfplumber.Page
範例的列表,每一個範例代表PDF每一頁的資訊。上文提及的 pdfplumber.Page
範例是 pdfplumber
的核心,後續對 PDF 的操作大量圍繞該類的屬性和方法實施,其重要屬性如下所示:
page_number
:頁碼順序,第一頁的序號是 1;witdh
:寬度;height
:高度;.objects/.chars/.lines/.rects/.curves/.figures/.images
:獲取PDF頁中的重要資料。核心方法如下所示:
extract_text()
:提取頁中的文字;extract_words()
:提取所有單詞及其相關資訊;extract_tables()
: 提取頁面的表格。extract_text()
呈現結果
extract_words()
呈現結果
extract_tables()
呈現效果,由於 PDF 中無表格,所有每頁得到的都是空!
當然Python除了讀取PDF檔案,還有一些其他功能,例如加密PDF,旋轉和疊加頁面等,下面是實現的範例程式碼
旋轉和疊加頁面
import PyPDF2 from PyPDF2.pdf import PageObject # 建立一個讀PDF檔案的Reader物件 reader = PyPDF2.PdfFileReader('resources/XGBoost.pdf') # 建立一個寫PDF檔案的Writer物件 writer = PyPDF2.PdfFileWriter() # 對PDF檔案所有頁進行迴圈遍歷 for page_num in range(reader.numPages): # 獲取指定頁碼的Page物件 current_page = reader.getPage(page_num) # type: PageObject if page_num % 2 == 0: # 奇數頁順時針旋轉90度 current_page.rotateClockwise(90) else: # 偶數頁反時針旋轉90度 current_page.rotateCounterClockwise(90) writer.addPage(current_page) # 最後新增一個空白頁並旋轉90度 page = writer.addBlankPage() # type: PageObject page.rotateClockwise(90) # 通過Writer物件的write方法將PDF寫入檔案 with open('resources/XGBoost-modified.pdf', 'wb') as file: writer.write(file)
加密PDF檔案
import PyPDF2 reader = PyPDF2.PdfFileReader('resources/XGBoost.pdf') writer = PyPDF2.PdfFileWriter() for page_num in range(reader.numPages): writer.addPage(reader.getPage(page_num)) # 通過encrypt方法加密PDF檔案,方法的引數就是rre #設定的密碼 writer.encrypt('foobared') with open('resources/XGBoost-encrypted.pdf', 'wb') as file: writer.write(file)
批次新增水印
import PyPDF2 from PyPDF2.pdf import PageObject reader1 = PyPDF2.PdfFileReader('resources/XGBoost.pdf') reader2 = PyPDF2.PdfFileReader('resources/watermark.pdf') writer = PyPDF2.PdfFileWriter() # 獲取水印頁 watermark_page = reader2.getPage(0) for page_num in range(reader1.numPages): current_page = reader1.getPage(page_num) # type: PageObject current_page.mergePage(watermark_page) # 將原始頁和水印頁進行合併 writer.addPage(current_page) # 將PDF寫入檔案 with open('resources/XGBoost-watermarked.pdf', 'wb') as file: writer.write(file)
到此這篇關於一文教會你用Python讀取PDF檔案的文章就介紹到這了,更多相關Python讀取PDF檔案內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45