Python 對pdf檔案切分合併

2021-09-19 05:14:14 字數 2211 閱讀 9524

今天有乙個問題,就是需要實現提取某個pdf文件的某幾頁,合併到另外乙個pdf文件中,想用我的pdf編輯工具實現此功能,發現需要收費,那怎麼能行。想到之前用python處理過word和excel,此時萌生了另外乙個想法,那就是萬能的python有沒有對應的庫呢?網上一查還真的有,那就是pypdf2直接pip install pypdf2。很快便實現了我想要的結果,特此記錄!

#coding=utf-8

"""利用python對pdf進行切分和合併

2019/4/18

@zjh

"""from pypdf2 import pdffilereader, pdffilewriter

#拆分乙個pdf文件,提取其中特定的頁數,input為輸入檔案的路徑,out為輸出

def split_pdf(input,out):

pdf_open = open(input, 'rb')

read_pdf = pdffilereader(pdf_open)

n1 = read_pdf.getnumpages() # 計算此pdf檔案中的頁數

print("文件共有%s頁"%n1)

writer = pdffilewriter()

start=1 #起始頁數

end=10 #終止頁數 可修改為自己想要的

#page1 = read_pdf.getpage(0) ##首頁下標為0

#page1.extracttext()

#print(page1)

for i in range(start,end):

writer.addpage(read_pdf.getpage(i))

pdf_write = open(out, "wb")

writer.write(pdf_write)

pdf_open.close()

pdf_write.close()

print("切分完畢!提取源文件第{}-{}頁".format(start,end))

#合併兩個pdf文件,input2加在input1後面

def merge(input1,input2,out):

pdf_open1 = open(input1, 'rb')

pdf_open2 = open(input2, 'rb')

read_pdf1 = pdffilereader(pdf_open1)

read_pdf2 = pdffilereader(pdf_open2)

n1 = read_pdf1.getnumpages() # 計算此pdf檔案中的頁數

n2 = read_pdf2.getnumpages() # 計算此pdf檔案中的頁數

writer = pdffilewriter()

for i in range(n1):

writer.addpage(read_pdf1.getpage(i))

for j in range(n2):

writer.addpage(read_pdf2.getpage(j))

writer.encrypt("666666") #為pdf設定密碼

pdf_write = open(out, "wb")

writer.write(pdf_write)

pdf_open1.close()

pdf_open2.close()

pdf_write.close()

if __name__ == '__main__':

split_pdf('test.pdf','out.pdf')

#merge('1.pdf','2.pdf','result.pdf')

本人在除錯程式中還是遇到了一些小問題,如下圖所示:

網上查了下,是編碼問題,定位到對應的utils.py檔案

原始檔如下:

修改為:

重新執行,問題解決!不得不說,python真的很強大!

PDF分析文字(1)利用python對PDF的讀取

1,安裝第三方庫檔案 pdfminer3k。安裝方式 pip install pdfminer3k 中文參考文件 3,資料獲取思路 1 通過pdf轉html,再利用爬蟲技術解決,目前來說這方面的技術比較成熟,而且參考很多。2 通過pdf轉為txt格式,再通過字元提取的方式處理。這樣的方式容易理解。3...

python讀取pdf檔案

pdfplumber是乙個可以處理pdf格式資訊的庫。可以查詢關於每個文字字元 矩陣 和行的詳細資訊,也可以對 進行提取並進行視覺化除錯。文件參考 安裝直接採用pip即可。命令列中輸入 pip install pdfplumber import pdfplumber with pdfplumber....

python 合併pdf檔案

coding utf 8 import os from pypdf2 import pdffilereader,pdffilewriter import time def getfilename filedir file list os.path.join root,filespath for ro...