如何利用Python操作pdf文件?具體該如何讀寫(xiě)?
網(wǎng)友解答: 這里簡(jiǎn)單介紹一下吧,讀取pdf文件的話,可以使用pdfminer3k這個(gè)庫(kù),寫(xiě)入pdf文件的話,可以使用reportlab這個(gè)庫(kù),下面我簡(jiǎn)單介紹一下這2個(gè)庫(kù)是如何讀寫(xiě)pdf文
這里簡(jiǎn)單介紹一下吧,讀取pdf文件的話,可以使用pdfminer3k這個(gè)庫(kù),寫(xiě)入pdf文件的話,可以使用reportlab這個(gè)庫(kù),下面我簡(jiǎn)單介紹一下這2個(gè)庫(kù)是如何讀寫(xiě)pdf文件的,實(shí)驗(yàn)環(huán)境win10+python3.6+pycharm5.0,主要內(nèi)容如下:
讀取pdf文件這里主要用到pdfminer3k這個(gè)庫(kù),專門(mén)用來(lái)解析pdf文件,中英文都可以,下面我簡(jiǎn)單介紹一下這個(gè)庫(kù)的安裝和使用:
1.安裝pdfminer3k,這個(gè)直接在cmd窗口輸入命令“pip install pdfminer3k”就行,如下:
2.這里為了更好的說(shuō)明問(wèn)題,我新建了一個(gè)pdf文檔,測(cè)試內(nèi)容如下,一段中文字符串:
3.最后,就是編寫(xiě)相關(guān)代碼來(lái)解析pdf文件了,基本思路是先創(chuàng)建pdf解析器,然后一頁(yè)一頁(yè)解析文本字符串,然后提取打印出來(lái)就行,主要代碼如下:
點(diǎn)擊運(yùn)行這個(gè)程序,就能解析出pdf文件的內(nèi)容,如下:
寫(xiě)入pdf文件這里可以使用reportlab這個(gè)庫(kù),專門(mén)用來(lái)生成最終的pdf文件(不支持中文),下面我簡(jiǎn)單介紹一下這個(gè)庫(kù)的安裝和使用:
1.安裝reportlab,這個(gè)與上面的安裝命令類似,直接在cmd窗口輸入命令“pip install reportlab”就行,如下:
2.安裝成功后,我們就可以寫(xiě)入pdf文件了,測(cè)試代碼如下,很簡(jiǎn)單:
運(yùn)行這個(gè)程序,就會(huì)在當(dāng)前目錄下生成一個(gè)pdf文件,打開(kāi)后的內(nèi)容如下,就是剛才程序?qū)懭氲膬?nèi)容:
至此,我們就完成了利用python來(lái)讀寫(xiě)pdf文件。總的來(lái)說(shuō),整個(gè)過(guò)程很簡(jiǎn)單,pdfminer3k和reportlab這2個(gè)庫(kù)可以快速完成對(duì)pdf文件的讀寫(xiě),只要你有一定的python基礎(chǔ),熟悉一下相關(guān)示例和代碼,很快就能掌握的,唯一不足的就是不能寫(xiě)入中文,pdf會(huì)出現(xiàn)亂碼情況,當(dāng)然,你也可以使用pypdf2這個(gè)庫(kù)(也不支持中文)讀寫(xiě)pdf文件,都行,網(wǎng)上也有相關(guān)教程,感興趣的話,可以搜一下,希望以上分享的內(nèi)容能對(duì)你有所幫助吧,也歡迎大家評(píng)論、留言。
網(wǎng)友解答:首先,需要安裝插件:pypdf
output = PdfFileWriter()
#讀取pdf文件
input1 = PdfFileReader(file('/home/zilu/workspace/liuy/project/caifujutou/static/xml/test.pdf', 'rb'))
output.addPage(input1.getPage(0))
outputStrem = open('/home/zilu/workspace/liuy/project/caifujutou/static/xml/test.pdf', 'rw')
#寫(xiě)入結(jié)果pdf文件
output.write(outputStrem)
outputStrem.close()
#操作普通文件類型
#filename,文件路徑、名稱,如果有,注意轉(zhuǎn)義或者開(kāi)頭加r,mode讀取的模式,r讀取,w寫(xiě)入,,
f = open('/home/zilu/workspace/liuy/project/caifujutou/static/xml/test.xml', 'r')
#獲取內(nèi)容并儲(chǔ)存在變量里
read = f.read()
print(read)
#關(guān)閉文件,節(jié)省內(nèi)存
f.close()
#讀取pdf文件寫(xiě)入新的pdf文件
by = open('/home/zilu/workspace/liuy/project/caifujutou/static/xml/test.pdf', 'rb')
by.seek(0, 0)
outputStrem = open('/home/zilu/workspace/liuy/project/caifujutou/static/xml/test2.pdf', 'w')
outputStrem.write(by.read())