python操作Pdf是辦公自動(dòng)化中很常用的,初級(jí)的pdf自動(dòng)化包括pdf文檔的拆分、合并、提取等操作,更高級(jí)的還包括word與pdf互轉(zhuǎn)等。鑒于剛開始接觸python自動(dòng)化,初級(jí)一些比較常用的操作就夠用了。
1、常用的python操作pdf庫(kù),PyPDF2和pdfplumber,這兩個(gè)庫(kù)各有優(yōu)點(diǎn),其中PyPDF2可以更好的讀取、寫入、分割、合并PDF文件,而pdfplumber可以更好的讀取PDF文件中內(nèi)容和提取PDF中的表格。
2、批量拆分、批量合并
拆分和合并是逆操作,拆分就是把一個(gè)完整的pdf分割成幾個(gè)小的pdf,合并是把想要順序的小的pdf合并成一個(gè)大的pdf,代碼如下:
拆分代碼:
def split_pdf(filename, filepath, save_dirpath, step=5):
"""
拆分PDF為多個(gè)小的PDF文件,
@param filename:文件名
@param filepath:文件路徑
@param save_dirpath:保存小的PDF的文件路徑
@param step: 每step間隔的頁(yè)面生成一個(gè)文件,例如step=5,表示0-4頁(yè)、5-9頁(yè)...為一個(gè)文件
@return:
"""
if not os.path.exists(save_dirpath):
os.mkdir(save_dirpath)
pdf_reader = PdfFileReader(filepath)
# 讀取每一頁(yè)的數(shù)據(jù)
pages = pdf_reader.getNumPages()
for page in range(0, pages, step):
pdf_writer = PdfFileWriter()
# 拆分pdf,每 step 頁(yè)的拆分為一個(gè)文件
for index in range(page, page+step):
if index < pages:
pdf_writer.addPage(pdf_reader.getPage(index))
# 保存拆分后的小文件
save_path = os.path.join(save_dirpath, filename+str(int(page/step)+1)+'.pdf')
print(save_path)
with open(save_path, "wb") as out:
pdf_writer.write(out)
print("文件已成功拆分,保存路徑為:"+save_dirpath)
合并代碼:
def concat_pdf(filename, read_dirpath, save_filepath):
"""
合并多個(gè)PDF文件
@param filename:文件名
@param read_dirpath:要合并的PDF目錄
@param save_filepath:合并后的PDF文件路徑
@return:
"""
pdf_writer = PdfFileWriter()
# 對(duì)文件名進(jìn)行排序
list_filename = os.listdir(read_dirpath)
list_filename.sort(key=lambda x: int(x[:-4].replace(filename, "")))
for filename in list_filename:
print(filename)
filepath = os.path.join(read_dirpath, filename)
# 讀取文件并獲取文件的頁(yè)數(shù)
pdf_reader = PdfFileReader(filepath)
pages = pdf_reader.getNumPages()
# 逐頁(yè)添加
for page in range(pages):
pdf_writer.addPage(pdf_reader.getPage(page))
# 保存合并后的文件
with open(save_filepath, "wb") as out:
pdf_writer.write(out)
print("文件已成功合并,保存路徑為:"+save_filepath)
3、提取文字內(nèi)容、提取表格內(nèi)容、提取圖片內(nèi)容
涉及到具體pdf內(nèi)容操作要用到pdfplumber這個(gè)庫(kù)。其中提取文字用到extract_text這個(gè)函數(shù),提取表格內(nèi)容用extract_table這個(gè)函數(shù)。提取圖片要用到PyMuPDF這個(gè)模塊。其中提取文字就是把一頁(yè)整體的文字直接提取出來(lái),表格是直接可以提取出excel。具體操作見參考鏈接。
4、轉(zhuǎn)換pdf2image,添加水印,文檔加密解密