@
前言
工作中,用到 PDF 文件的時候,真是太常見了。但你會發現,很多時候,我們需要將幾份 PDF 合併爲一個 PDF 文件,這個時候你往往會去百度,然後打開一個付費的 PDF 合併網站開始合併。
還在傻傻付費合併 PDF 文件?
今天,我給你分享一個一鍵合併 PDF 的辦公自動化方案!還是用我們熟悉的 Python 語言,不過這回我們會調用 PyPDF2
這個模塊。具體如何使用這個模塊,我這裏就不詳細說了,具體看 http://pythonhosted.org/PyPDF2/
這個官方說明。今天,我們要用到什麼,我就教大傢什麼,畢竟辦公中,你也沒時間去學習那些跟工作沒有什麼關係的東西。
我們的任務
將 1.pdf 和 2.pdf 這兩個文檔合併成 3.pdf。
理清工作流程
做事情之前,你必須要明白你做事情的邏輯,也就是工作流程,這個對於我們解決重複性工作而言,是必須要做的:
- 讀取 1.pdf 的文件,寫入 3.pdf
- 讀取 2.pdf 的文件,寫入 3.pdf
看似合併的一個簡單操作,確實不是那麼簡單的合併的。
讓 Python 開幹
導入 PyPDF2 模塊:
from PyPDF2 import PdfFileReader, PdfFileWriter
這兩個方法對應了 pdf 文件的讀取和寫入,其中 PdfFileReader 能讀取文件,PdfFileWriter 可以寫入文件。
注意:讀取必須一頁一頁地讀取並寫入,也就是說不能一下子把整個文件都讀取了再寫入,必須讀取一頁寫入一頁。
幸運的是,我們樣例** 1.PDF 和 2.pdf** 都只有一頁,這裏的提醒是特別給小夥伴準備的,可千萬別跳到坑裏去了。
from PyPDF2 import PdfFileReader, PdfFileWriter
path = r'C:\Users\xxxxxx'
pdf_writer = PdfFileWriter()
for i in range(1, 2):
pdf_reader = PdfFileReader('E:\demo\{}.pdf'.format(i))
for page in range(pdf_reader.getNumPages()):
pdf_writer.addPage(pdf_reader.getPage(page))
with open('E:\demo\3.pdf', 'wb') as out:
pdf_writer.write(out)
細心地你會發現,合併在循環中,但是輸出在循環外,沒錯,這就印證了我們之前說的“讀取一頁寫入一頁”。with
這句話,新建了 3.pdf,並由寫入器的 pdf_writer.write(out)
方法輸出。
尾聲
下一期,我給你科普一下如何讓 Python 幫我們拆分 PDF。