import os
from PyPDF2 import PdfFileMerger
from PyPDF2 import PdfFileWriter, PdfFileReader
import datetime
def gefPdfName():
now = datetime.datetime.now()
otherStyleTime = now.strftime("%Y%m%d_%H%M%S")
return otherStyleTime + '.pdf'
def printPdfPage():
infile = PdfFileReader('./pdf/' + pdfFile, 'rb')
page = ''
for i in range(infile.getNumPages()):
page = page + str(i + 1) + ','
print('目前的页码顺序为:' + page)
def delPdf(pdfFile, delArr):
# page numbering starts from 0
pages_to_delete = delArr.split(',')
# print(pages_to_delete)
infile = PdfFileReader('./pdf/' + pdfFile, 'rb')
output = PdfFileWriter()
for i in range(infile.getNumPages()):
if str(i + 1) not in pages_to_delete:
print(i + 1)
p = infile.getPage(i)
output.addPage(p)
newfile = gefPdfName()
with open('./pdf/' + newfile, 'wb') as f:
output.write(f)
print('删除完成!新文件为' + newfile)
def sortPdf(pdfFile, sortPage):
# page numbering starts from 0
print(sortPage)
page = sortPage.split(',')
print('重新排序的顺序为:' + sortPage)
infile = PdfFileReader('./pdf/' + pdfFile, 'rb')
output = PdfFileWriter()
for i in page:
p = infile.getPage(int(i) - 1)
output.addPage(p)
newfile = gefPdfName()
with open('./pdf/' + newfile, 'wb') as f:
output.write(f)
print('重新排序完成!新文件为' + newfile)
def mergerPdf(target_path):
pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
file_merger = PdfFileMerger()
for pdf in pdf_lst:
file_merger.append(pdf) # 合并pdf文件
newfile = gefPdfName()
file_merger.write('./pdf/' + newfile)
print('合并完成!新文件为' + newfile)
def splitPdf(pdfFile):
# page numbering starts from 0
infile = PdfFileReader('./pdf/' + pdfFile, 'rb')
for i in range(infile.getNumPages()):
p = infile.getPage(i)
output = PdfFileWriter()
output.addPage(p)
newfile = '{:0>5d}'.format(i + 1) + '.pdf'
with open('./pdf/' + newfile, 'wb') as f:
output.write(f)
if __name__ == "__main__":
while True:
print("导出、排序PDF请输入1;")
print("删除PDF请输入2;")
print("合并PDF请输入3;")
print("分离PDF请输入4;")
print("退出请输入Q;")
p = input('输入请选择:')
if p == "q":
break
elif int(p) == 1:
print("注意,请将PDF源文件复制到本程序pdf文件夹下;")
pdfFile = input('请输入文件名,如:123.pdf:')
printPdfPage()
sortPage = input('请将页码重新排序,不要的页码请删除,如:1,2,3或 3,2,1:')
sortPdf(pdfFile, sortPage)
elif int(p) == 2:
print("注意,请将PDF源文件复制到本程序pdf文件夹下;")
pdfFile = input('请输入文件名,如:123.pdf:')
delArr = input('请输入要删除的页码,如输入1或1,3,5:')
delPdf(pdfFile, delArr)
elif int(p) == 3:
print("请把所有要合并的pdf源文件放到本程序下的一个文件夹内;")
print("pdf按顺命名,如001.pdf,002.pdf,003.pdf...;")
target_path = input('请输入要合并的pdf文件夹名:')
mergerPdf(target_path)
elif int(p) == 4:
pdfFile = input('请输入文件名,如:123.pdf:')
splitPdf(pdfFile)