python pdfminer用法演示

2021-08-29 02:01:51 字數 2534 閱讀 1640

"""pdfminer_demo.py

注意: 1. python 3.x需要安裝的是pdfminer3k而不是pdfminer(後者僅支援python 2.x),不過在匯入的時候的語句都是`import pdfminer`

參考: 1. python 3.6 中使用pdfminer解析pdf檔案 - 大泡泡的專欄 - csdn部落格

"""from pdfminer.pdfinterp import pdfresourcemanager, pdfpageinterpreter

from pdfminer.pdfinterp import pdftextextractionnotallowed

from pdfminer.layout import lttextboxhorizontal, laparams

from pdfminer.pdfparser import pdfparser, pdfdocument

from pdfminer.converter import pdfpageaggregator

deffrom_pdf_to_txt

(read_file, write_file, page_start=

0, page_end=0)

:"""

:param read_file: str. 注意字尾名是".pdf"

:param write_file: str. 注意字尾名填".txt"

:param page_start: int

:param page_end: int

:return:

"""# 以二進位制讀模式開啟

origin_pdf_file =

open

(read_file,

'rb'

)# 用檔案物件來建立乙個pdf文件分析器

parser = pdfparser(origin_pdf_file)

# 建立乙個pdf文件

doc = pdfdocument(

)# 連線分析器與文件物件,這個語句比較有意思,相互set對方進去

parser.set_document(doc)

doc.set_parser(parser)

# 提供初始化密碼.如果pdf沒有密碼,就傳入乙個空引數

doc.initialize(

)# 檢測文件是否提供txt轉換,不提供就忽略

ifnot doc.is_extractable:

# 如果pdf不支援提取,則直接報錯

raise pdftextextractionnotallowed

else

:# 建立pdf資源管理器 來管理共享資源

srcmgr = pdfresourcemanager(

)# 建立乙個pdf裝置物件

device = pdfpageaggregator(srcmgr, laparams=laparams())

# 建立乙個pdf直譯器物件

interpreter = pdfpageinterpreter(srcmgr, device)

# 迴圈遍歷列表,每次處理乙個page的內容

pages =

list

(doc.get_pages())

if page_end ==0:

page_end =

len(pages)

for i in

range

(page_start, page_end)

: interpreter.process_page(pages[i]

)# 接受該頁面的ltpage物件

layout = device.get_result(

)# 這裡返回的是乙個ltpage物件,裡面存放著這個page解析出的各種物件

# 一般包括lttextbox,ltfigure,ltimage,lttextboxhorizontal等等

# 想要獲取文字就取它的text屬性,即x.get_text()

# 獲取text屬性

for x in layout:

ifisinstance

(x, lttextboxhorizontal)

:with

open

(write_file,

'a', encoding=

'utf-8'

)as f:

results = x.get_text(

) f.write(results +

'\n'

)# 最後關閉原始pdf檔案

origin_pdf_file.close(

)def

test()

: from_pdf_to_txt(

'../data/sample.pdf'

,'../output/output.txt',0

,1)if __name__ ==

'__main__'

: test(

)

用Margin還是用Padding

用margin還是用padding 何時應當使用margin 需要在border外側新增空白時。空白處不需要背景 色 時。上下相連的兩個盒子之間的空白,需要相互抵消時。如15px 20px的margin,將得到20px的空白。何時應當時用padding 需要在border內測新增空白時。空白處需要背...

用Margin還是用Padding

用margin還是用padding這個問題是每個學習css高階時的必經之路。css邊距屬性定義元素周圍的空間。通過使用單獨的屬性,可以對上 右 下 左的外邊距進行設定。也可以使用簡寫的外邊距屬性同時改變所有的外邊距。w3school 邊界 margin 元素周圍生成額外的空白區。空白區 通常是指其他...

用yaml寫用例

第一步 安裝yaml,在執行裡輸入 pip install pyyaml 檢驗是否安裝成功,在pycharm裡輸入 import yaml 第二步 建立乙個file,字尾寫yaml或yml 在yml檔案裡寫入單個使用者名稱和密碼 開啟yml檔案並以字典的形式列印出來 執行結果 在yml檔案裡寫入多個...