<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
PDF是我們經常會接觸到的一種檔案格式,文獻、檔案...很多都是PDF格式。它以格式穩定的優勢,使得我們在列印、分享、傳輸過程中能夠最優的保持原有色彩和格式。
PDF是以PostScript語言影象模型為基礎的一種檔案格式,它在格式的穩定性方面雖然具有很大優勢。但是,在可編輯性方面卻為使用者引入了另外一個困擾。
例如,在檔案的分割、合併、剪下、轉換、編輯等方面PDF就有些捉襟見肘了。
Adobe Reader、福昕閱讀器、熊貓PDF...經常用到的PDF工具只能用於檔案閱讀,但是免費版都不可以用於檔案編輯。雖然,網頁版PDF工具,例如SmallPDF、I love PDF可以用於PDF的編輯,但是對於檔案大小也有限制。
曾經,為了替換PDF中的一頁,我幾乎試遍了所有市面上主流的PDF工具,最終還是不得不選擇使用付費工具來解決問題。
事後想了想,既然這些商業化軟體不靠譜,為什麼不考慮自己動手開發一款工具呢?明明幾十行程式碼能夠解決的問題,為什麼要費那麼多勁去下載、安裝那些沒有節操的軟體呢?
本文就來介紹一下利用Python輕鬆開發一款PDF編輯工具,可以用於PDF轉TxT、分割、合併、剪下、轉換。
PyPDF2是一個第三方的python PDF庫,它能夠對PDF檔案進行分割、合併、裁剪和轉換頁面。
另外,它還可以對PDF檔案新增自定義資料、水印、密碼,也可以從PDF檔案中檢索出文字和後設資料。
安裝
使用pip直接安裝:
$ pip install PyPDF2
下面就來演示幾項PDF編輯功能,並且會逐行解釋程式碼的含義。
先給出實現程式碼,
from PyPDF2 import PdfFileWriter, PdfFileReader output = PdfFileWriter() // 1 input1 = PdfFileReader(open("example.pdf", "rb")) // 2 def delete_pdf(index): pages = input1.getNumPages() // 3 for i in range(pages): if i+1 in index: continue output.addPage(input1.getPage(i)) // 4 outputStream = open("PyPDF2-output.pdf", "wb") output.write(outputStream) // 5 delete_pdf([2,3,4])
下面來解釋一下程式碼中的幾個關鍵點:
已經實現了刪除PDF頁,接下來就看一下如何把另外一個PDF中的頁面合併到當前PDF中。
方法1:
可以沿著前面刪除PDF頁的方式進行拓展一下,對PDF進行合併。
from PyPDF2 import PdfFileWriter, PdfFileReader output = PdfFileWriter() input1 = PdfFileReader(open("example.pdf", "rb")) input2 = PdfFileReader(open("simple2.pdf", "rb")) // 1 def merge_pdf(add_index, origin_index): pages = input1.getNumPages() k = 0 for i in range(pages): if i+1 in add_index: output.addPage(input2.getPage(origin_index[k])) // 2 pages += 1 k += 1 output.addPage(input1.getPage(i)) outputStream = open("PyPDF2-output.pdf", "wb") output.write(outputStream) merge_pdf([2,3,4], [0, 0, 0])
方法2:
除了方法1,還有另外一種方法可以合併PDF:
from PyPDF2 import PdfFileMerger // 1 merger = PdfFileMerger() input1 = open("document1.pdf", "rb") // 2 input2 = open("document2.pdf", "rb") input3 = open("document3.pdf", "rb") merger.append(fileobj = input1, pages = (0,3)) // 3 merger.merge(position = 2, fileobj = input2, pages = (0,1)) // 4 merger.append(input3) // 5 output = open("document-output.pdf", "wb") merger.write(output)
除了上述介紹的2項主要功能,PyPDF2也有一些其他小功能:
input1.getPage(1).rotateClockwise(90)
使得頁面1旋轉90度。
page = input1.getPage(3) watermark = PdfFileReader(open("watermark.pdf", "rb")) page.mergePage(watermark.getPage(0))
其中,水印儲存在另外一個PDF檔案watermark.pdf中。
password = "secret" output.encrypt(password)
首先給一個secret密碼,然後使用encrypt對輸出檔案進行加密。
前面介紹的PyPDF2主要擅長於PDF頁面級編輯,而對於文字和源資料級別編輯能力較弱。
所以,這裡就來介紹另外一款Python庫來彌補它的不足。
PDFMiner是一個PDF檔案的文字提取工具,它具有如下特性:
安裝
$ pip install pdfminer
pdfminer在GitHub的託管專案中,在目錄tools下給出了一些實用的工具集,例如,PDF轉HTML、PDF轉HTML、PDF轉TXT。我們可以直接通過使用下面命令提出PDF檔案中的文字資訊。
$ pdf2txt.py samples/simple1.pdf
通過上述2款Python庫,就可以實現從頁面到文字後設資料的編輯,本文只是簡單的介紹了每項的基本用法。關於詳細的用法和函數列表,可以閱讀官方檔案,或者閱讀GitHub上專案原始碼進行了解。此外,可以在這些基本的用法基礎上進行發散思維,發掘更多有價值的應用場景,例如,提出文字資料之後呼叫翻譯API進行文獻翻譯。也可以,對軟體進行封裝,開發成一款通用的PDF編輯工具。
20行Python程式碼就輕鬆解決了困擾很多同學已久的PDF編輯問題,可見Python的作用和價值是不可忽視的。
到此這篇關於20行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