python之pdf分页_Qin1999的博客-CSDN博客_pdf分页python
python之pdf合并_Qin1999的博客-CSDN博客
本文来源以上两篇文章进行的总结
一、安装PyPDF2,通过命令 pip install PyPDF2
二、拆分
import os
from PyPDF2 import PdfFileReader, PdfFileWriter
#参数 pdf文件位置 页数大小
def pdfPageingAndSize(filePath,pageSize=1):
fileDir,fileName=os.path.split(filePath)
fileNameExceptSuffix=fileName.split('.')[0]
#创建输出文件夹
outputDir=str(fileNameExceptSuffix)+"_pdf_output_dir"
os.mkdir(os.path.join(fileDir,outputDir))
#输出文件夹的路径
OutputDirFile=os.path.join(fileDir,outputDir)
inputPdf = PdfFileReader(filePath, "rb")
# 获得源PDF文件中页面总数
pageNumber = inputPdf.getNumPages()
print("页数:%d"%pageNumber)
count=0
output = PdfFileWriter()
for index in range(pageNumber):
count+=1
output.addPage(inputPdf.getPage(index))
outPdfName='1-'+str(count)+'.pdf'
#每隔pageSize个页做一个pdf
if(count%pageSize==0):
outPdfName="pages-"+str(count-pageSize+1)+"-"+str(count)+'.pdf'
outputStream = open(os.path.join(OutputDirFile, outPdfName), "wb")
output.write(outputStream)
outputStream.close()
output = PdfFileWriter()
#如果有些pdf不是pageSize的倍数,则需要单独保存
if(pageNumber%pageSize):
number=pageNumber%pageSize
start=pageNumber-number+1
end=pageNumber
outPdfName="pages-"+str(start)
if(start!=end):
outPdfName=outPdfName+"-"+str(end)
outPdfName=outPdfName+'.pdf'
outputStream = open(os.path.join(OutputDirFile, outPdfName), "wb")
output.write(outputStream)
outputStream.close()
#此文件和PDF放在同一文件夹内
filePath="2022.pdf"
#按pageSize的数量进行拆分
pdfPageingAndSize(filePath,pageSize=1)
三、合并
import os
from PyPDF2 import PdfFileReader, PdfFileWriter
# 参数 文件路径 输出文件名
def pdfUnit(filePath,outPdfName):
totalFile=os.listdir(filePath)
output = PdfFileWriter()
outputPages=0
for each in totalFile:
eachFilePath=os.path.join(filePath, each)
inputPdf = PdfFileReader(eachFilePath, "rb")
# 获得源PDF文件中页面总数
pageNumber = inputPdf.getNumPages()
outputPages += pageNumber
print("页数:%d"%pageNumber)
# 分别将page添加到输出output中
for index in range(pageNumber):
output.addPage(inputPdf.getPage(index))
outputStream = open(os.path.join(filePath, outPdfName), "wb")
output.write(outputStream)
outputStream.close()
filePath=r"C:\Users\xxx\Desktop\pdf"
pdfUnit(filePath,'total.pdf')
这里可以根据实际需要进行相关环节代码的修改,这里自己做一个记录,感谢原博主。