欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

千鋒扣丁學(xué)堂Python培訓(xùn)之如何使用Python玩轉(zhuǎn)PDF文檔

2019-05-24 13:30:37 3139瀏覽

今天千鋒扣丁學(xué)堂培訓(xùn)老師給大家介紹一下關(guān)于如何使用Python玩轉(zhuǎn)PDF的詳細介紹,首先PortableDocumentFormat(可移植文檔格式),或者PDF是一種文件格式,可以用于跨操作系統(tǒng)的呈現(xiàn)和文檔交換。盡管PDF最初是由Adobe發(fā)明的,但它現(xiàn)在是由國際標準化組織(ISO)維護的開放標準。你可以通過使用PyPDF2包在Python中處理已先存在的PDF。




PyPDF2是一個純Python包,可用于許多不同類型的PDF操作。

本文將帶你了解如何執(zhí)行以下操作:

從Python中提取PDF中的文檔信息

旋轉(zhuǎn)頁面

合并PDF

拆分PDF

添加水印

加密PDF

pyPdf,PyPDF2和PyPDF4的歷史

最初的pyPdf軟件包于2005年發(fā)布。pyPdf的最后一個正式版本是在2010年。大約一年后,一家名為Phasit的公司贊助了一個名為PyPDF2的pyPdf分支。該代碼編寫為向后與原始代碼兼容,并且用了好多年,效果一直很好,其最后一個版本是在2016年。

有一個名為PyPDF3的軟件包簡短系列版本,然后該項目被重命名為PyPDF4。所有這些項目都完全相同,但pyPdf和PyPDF2+之間的最大區(qū)別在于后者版本增加了Python3支持。Python3的原始pyPdf有一個不同的Python3分支,但是這個分支已經(jīng)多年沒有維護了。

雖然最近放棄了PyPDF2,但新的PyPDF4與PyPDF2沒有完全的向后兼容性。本文中的大多數(shù)示例都可以與PyPDF4完美配合,但也有一些不能,這就是為什么PyPDF4在本文中沒有更多的特色。隨意用PyPDF4替換PyPDF2的導(dǎo)入,看看它是如何工作的。

pdfrw:一個替代的PDF操作包

PatrickMaupin創(chuàng)建了一個名為pdfrw的軟件包,它可以完成許多與PyPDF2相同的工作。除了加密的特殊情況外,本文后面提到PyPDF2的所有操作,pdfrw均可以實現(xiàn)。

pdfrw的最大區(qū)別在于它與ReportLab軟件包集成,因此你可以使用一些或所有預(yù)先存在的PDF構(gòu)建一個新的PDF。

PyPDF2的安裝

如果使用Anaconda而不是常規(guī)Python,可以使用pip或conda安裝PyPDF2。以下是使用pip安裝PyPDF2的方法:

$pip install pypdf2

由于PyPDF2沒有任何依賴,因此安裝非常快。

如何從Python中提取PDF文檔信息

我們可以使用PyPDF2從PDF中提取元數(shù)據(jù)和一些文本,尤其是當在預(yù)先存在的PDF文件上執(zhí)行某些類型的自動化時是非常有用的。

以下是當前可以提取的數(shù)據(jù)類型:

Author

Creator

Producer

Subject

Title

Numberofpage

可以在自己的電腦上隨便找一個PDF文件進行嘗試操作。下面是使用該PDF編寫一些代碼,并了解如何訪問這些屬性:





首先從PyPDF2包導(dǎo)入PdfFileReader。PdfFileReader是一個具有多種與PDF文件交互的方法的類。在此示例中,我們調(diào)用了.getDocumentInfo(),它將返回DocumentInformation的實例,包含了我們感興趣的大部分信息。我們還可以在reader對象上調(diào)用.getNumPages(),讓它返回文檔中的頁數(shù)。

information這個變量具有多個實例屬性,可以使用這些屬性從文檔中獲取所需的其余元數(shù)據(jù)。我們可以打印出該信息并將其返回以備將來使用。

雖然PyPDF2具有.extractText(),可以在其頁面對象上使用提取文本(本例中未顯示),但它的效果不是很好。有些PDF會返回文本,有些會返回空字符串。如果要從PDF中提取文本,建議應(yīng)該看一下PDFMiner項目。PDFMiner更加強大,專門用于從PDF中提取文本。

如何旋轉(zhuǎn)頁面?

有時候PDF是橫向模式而不是縱向模式,甚至是顛倒的。當有人掃描文檔為PDF或電子郵件時,很可能會發(fā)生這種情況。我們可以打印出文檔并閱讀紙質(zhì)版本,也可以使用Python的強大功能來旋轉(zhuǎn)有問題的頁面。

下面看一下如何使用PyPDF2旋轉(zhuǎn)文章的一些頁面:





上面除了pdfileReader之外,還導(dǎo)入了pdfileWriter,因為我們需要編寫一個新的pdf。rotate_pages()獲取要修改的PDF的路徑。在這個函數(shù)中,需要創(chuàng)建一個可以命名為pdf-writer的writer對象和一個名為pdf-reader的reader對象。

接下來,可以使用.getpage()獲取所需的頁面。上面開始輸入了第0頁,也就是第一頁,調(diào)用page對象的.rotateClockwise()順時針旋轉(zhuǎn)方法并輸入90。然后同樣地,對于第二頁,調(diào)用.rotateCounterLockwise()逆時針旋轉(zhuǎn)并輸入90。

每次調(diào)用Rotation旋轉(zhuǎn)方法后,都會調(diào)用.addPage(),這將向writer對象添加頁面的旋轉(zhuǎn)版本。最后一頁是第3頁,沒有對其進行任何旋轉(zhuǎn)。最后,使用.write()把所有新頁寫入新的PDF。

如何合并PDF?

在許多情況下,我們希望將兩個或多個PDF合并到一個PDF中。例如,現(xiàn)在可能有一個標準的封面,需要轉(zhuǎn)到許多類型的報告中。這時候就可以使用python來幫助完成這類工作。

下面是實現(xiàn)的代碼,完成PDF合并的操作:





假如有一個要合并到一起的pdf列表時,可以直接使用merge_pdf函數(shù)完成。此函數(shù)采用了輸入路徑和輸出路徑作為參數(shù)。

首先遍歷輸入的paths,并為每個輸入創(chuàng)建一個PDF閱讀對象。然后遍歷PDF文件中的所有頁面,并使用.addpage()將這些頁面寫入writer對象。當完成對列表中所有PDF的所有頁面的寫入后,將在末尾寫入新的結(jié)果中。

如果不想合并每個PDF的所有頁面,可以通過添加一系列要添加的頁面來稍微增強這個腳本。挑戰(zhàn)一點的話,也可以使用Python的argparse模塊為這個函數(shù)創(chuàng)建一個命令行接口。

如何拆分PDF?

有時可能需要將PDF拆分為多個PDF,對于包含大量掃描內(nèi)容的PDF來說尤其重要。以下是如何使用PyPDF2將PDF拆分為多個文件:




這個函數(shù)中再次創(chuàng)建了PDF的reaer對象,并對其所讀取的頁面進行遍歷。對于PDF中的每個頁面,創(chuàng)建一個新的PDF的writer實例并向其添加單個頁面。然后,將該頁面寫入一個唯一命名的文件。腳本運行完畢后,就可以將原始PDF的每個頁面拆分為單獨的PDF。

如何添加水???

水印是紙質(zhì)或者電子文檔上的圖像或圖案,一些水印只能在特殊照明條件下才能看到。水印的重要性在于它可以保護你的知識產(chǎn)權(quán),例如圖像或PDF。

我們可以使用Python和PyPDF2為文檔添加水印,而且是擁有僅包含水印圖像或文本的PDF。下面是向PDF添加水印方法:



上面create_watermark有三個參數(shù):

input_pdf:要加水印的PDF文件路徑

output:要保存PDF的水印版本的路徑

watermark:包含水印圖像或文本的PDF

在代碼中,打開水印PDF并從文檔中抓取第一頁,因為這是水印應(yīng)該駐留的位置。然后使用input_pdf和通用pdf_writer對象創(chuàng)建PDF的writer對象,以寫出帶水印的PDF。

下一步是遍歷input_pdf中的頁面,然后調(diào)用.mergePage()并以用上面讀取的水印對象watermark_page為參數(shù),這樣會將watermark_page覆蓋在當前頁面的頂部,然后再將新合并的頁面添加到pdf_writer對象中。遍歷完成后,最后將新加水印的PDF寫入磁盤。

如何加密PDF?

PyPDF2目前僅支持將用戶密碼和所有者密碼添加到預(yù)先存在的PDF。在PDF版本中,所有者密碼會提供PDF的管理員權(quán)限,并允許設(shè)置文檔的權(quán)限,而用戶密碼只允許打開文檔。

實際上,PyPDF2是不允許設(shè)置文檔的任何權(quán)限的,即使它允許設(shè)置所有者密碼的情況下。但無論如何,這是可以加密的方式,也將固有地加密PDF:



add_encryption以輸入輸出PDF路徑和要添加到PDF的密碼為參數(shù)。由于需要加密整個輸入PDF,因此需要遍歷其所有頁面并將其添加到writer編寫器。最后一步是調(diào)用.encrypt(),以用戶密碼,所有者密碼以及是否應(yīng)該添加128位加密為參數(shù)。默認情況下,要啟用128位加密。如果將其設(shè)置為False,則將應(yīng)用40位加密。

PyPDF2包非常有用,可以使用PyPDF2自動執(zhí)行腳本完成PDF文檔的批量操作。本文介紹了如何從PDF中提取元數(shù)據(jù),旋轉(zhuǎn)頁面,合并和拆分PDF,添加水印,以及添加加密的操作。同時,還要關(guān)注較新的PyPDF4包,因為它很快就會取代PyPDF2。也可以看看pdfrw包,它也可以執(zhí)行許多與PyPDF2相同的操作。

以上就是關(guān)于千鋒扣丁學(xué)堂Python培訓(xùn)之如何使用Python玩轉(zhuǎn)PDF文檔的全部內(nèi)容,最后想要了解更多關(guān)于Python和人工智能方面內(nèi)容的小伙伴,請關(guān)注扣丁學(xué)堂Python培訓(xùn)官網(wǎng)、微信等平臺,扣丁學(xué)堂IT職業(yè)在線學(xué)習教育平臺為您提供權(quán)威的Python開發(fā)環(huán)境搭建視頻,扣丁學(xué)堂老師精心推出的Python視頻教程定能讓你快速掌握Python從入門到精通開發(fā)實戰(zhàn)技能??鄱W(xué)堂Python技術(shù)交流群:279521237。


扣丁學(xué)堂微信公眾號                          Python全棧開發(fā)爬蟲人工智能機器學(xué)習數(shù)據(jù)分析免費公開課直播間


      【關(guān)注微信公眾號獲取更多學(xué)習資料】         【掃碼進入Python全棧開發(fā)免費公開課】



查看更多關(guān)于"Python開發(fā)資訊"的相關(guān)文章>

標簽: Python培訓(xùn) Python視頻教程 Python在線視頻 Python學(xué)習視頻 Python培訓(xùn)班

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部