- Python程序設計
- 張雪萍主編
- 607字
- 2019-06-19 15:48:35
3.4 處理.pdf文件
Python 之所以強大,在于它有大量第三方庫的支持(幾乎每個月都有新的庫產生),同一問題往往可用多個庫解決。Python 對.pdf 文件的處理也不例外。這里,選擇以 PDFMiner 庫[7]為例來介紹對.pdf 文件的處理。也許當你拿到本書時,你已經有更好的庫來處理.pdf文件了,那就用你喜歡的庫吧,只要能解決問題就好。
1.安裝PDFMiner庫
在Windows命令行窗口下,通過命令“pip list”查看是否安裝此庫。如果沒有,使用 pip 工具進行安裝。這里,先使用一個第三方庫 PDFMiner3K 把.pdf 文件讀成字符串,然后用StringIO將其轉換成文件對象。注意安裝庫的名字是“pdfminer3k”,如下:

再次強調,我們安裝的是 Anaconda 環境。如果要分析現有.pdf 文件的內容,可用PDFMiner。
2.處理.pdf文件
在具體使用 PDFMiner 庫處理.pdf 文件之前,需要先學習解析.pdf 文件用到的類(見表3-5)[8]。
表3-5 PDFMiner庫中解析.pdf文件常用的類

【例3-21】 將指定目錄下的.pdf文件的內容讀取到一個.txt文件中。


運行以上程序后打開“D:\PythonTest\pdf_document\pdf_text_1.txt”文件,.txt文本文件中的部分內容顯示如下:

處理.pdf文件的基本思路和流程:
(1)打開文件(二進制方式),聲明文件對象。
(2)用文件對象創建一個文件解析器對象(PDFParser)。
(3)創建一個 pdf 文件對象,用于存儲文件結構(PDFDocument),PDFDocument與PDFParser是相互關聯的。
(4)連接pdf文件解析器和pdf文件對象(praser.set_document、doc.set_parser)。
(5)創建一個pdf資源管理器對象來存儲共享資源(PDFResourceManager)。
(6)創建一個pdf頁面聚合對象,作為PDFPageInterpreter的參數傳入(PDFPage-Aggregator)。
(7)創建一個pdf解析器對象來解析page頁面內容(PDFPageInterpreter)。
(8)處理文件中每一個page頁面的內容(get_pages()獲取page列表)。
- Boost.Asio C++ Network Programming(Second Edition)
- Android NDK Beginner’s Guide
- Magento 1.8 Development Cookbook
- KnockoutJS Starter
- PhoneGap:Beginner's Guide(Third Edition)
- 深入分布式緩存:從原理到實踐
- 區塊鏈技術進階與實戰(第2版)
- 區塊鏈國產化實踐指南:基于Fabric 2.0
- 零基礎學C語言(升級版)
- Java并發編程:核心方法與框架
- Instant Zurb Foundation 4
- Python 快速入門(第3版)
- Pandas 1.x Cookbook
- 網絡綜合布線與組網實戰指南
- Zend Framework 2 Cookbook