怎么在第一個(gè)PDF文件的中間,插入第二個(gè)PDF文件的內(nèi)容?
大家好,我是Python進(jìn)階者。
前言
前幾天在學(xué)習(xí)【麥?zhǔn)濉縋ython自動(dòng)化書本中案例的時(shí)候,學(xué)到了PDF文件處理,感覺挺有意思的。正好在【J哥】的交流群里邊有粉絲問了一道關(guān)于PDF處理的問題。
這個(gè)問題如果沒有學(xué)點(diǎn)PDF的處理,一開始看到還是覺得有點(diǎn)困難的,我一開始也有點(diǎn)束手無策。
一、思路
針對(duì)這個(gè)問題,其實(shí)我有三個(gè)思路。
第一個(gè)思路:將pdf文件一進(jìn)行分割成單獨(dú)文件,之后和pdf文件二進(jìn)行排序放到一個(gè)文件夾下,再統(tǒng)一進(jìn)行merge;
第二個(gè)思路:嘗試用merge進(jìn)行合并,直接插入到文件的指定頁(yè)面之下,但是我目前對(duì)這個(gè)用的不是很好,沒有弄出來;
第三個(gè)思路:逐頁(yè)進(jìn)行添加,并保存為新文件。
二、解決方案
針對(duì)該問題,這里采用了第三個(gè)方法,最為自然,也是三個(gè)方法中最簡(jiǎn)單的一個(gè)了。這里需要用到PDF的處理庫(kù)PyPDF2,這個(gè)庫(kù)需要安裝,安裝命令:pip install PyPDF2
這個(gè)庫(kù)針對(duì)PDF的處理來說還是算比較強(qiáng)大的了,可以針對(duì)PDF文件做拆分、合并、加密和截取等。關(guān)于這個(gè)庫(kù)的其他用法,很多公眾號(hào)也有寫,這里就不展開贅述了。
針對(duì)這個(gè)問題,這里直接上代碼了,如下所示:
from PyPDF2 import PdfFileReader, PdfFileWriter
pdf_file1 = PdfFileReader("dogs_0.pdf") # 要插入的pdf文件
pdf_file2 = PdfFileReader("python介紹.pdf") # 要被插入的目標(biāo)pdf文件
new_file = PdfFileWriter()
# 這里場(chǎng)景是計(jì)劃將pdf_file1插入到pdf_file2的第3頁(yè)
new_file.addPage(pdf_file2.getPage(0))
new_file.addPage(pdf_file2.getPage(1))
new_file.addPage(pdf_file1.getPage(0))
new_file.addPage(pdf_file2.getPage(2))
# 寫入文件
with open("merged_file.pdf", "wb") as f:
new_file.write(f)
關(guān)鍵的地方都有注釋進(jìn)行標(biāo)注了,如果你需要插入的pdf原始文件頁(yè)面太多的話,可以考慮循環(huán)遍歷追加,這樣就不至于寫很多行代碼了。
三、總結(jié)
我是Python進(jìn)階者。本文基于實(shí)際過程中遇到的PDF文件拆分和合并問題,使用了PyPDF2第三方庫(kù)來幫助解決,這個(gè)庫(kù)可以針對(duì)PDF文件做拆分、合并、加密和截取等,功能強(qiáng)大,幫助自己和大家加深對(duì)該庫(kù)用法的認(rèn)識(shí)。