如题,每次都要重新写脚本很烦人,放在CSDN当做工具吧!
1.将一个文件夹下的所有pdf文件合并为一个文件
def merge_pdf_files(path, save_path, outputname):
# 将给定文件夹(路径为path)下所有的pdf文档合并为一个文档
name_list = os.listdir(path)
pdf_name_list = []
for name in name_list:
if name[-4:] == ".pdf":
pdf_name_list.append(name)
else:
pass
outputfile = open(save_path + "\\" + outputname, 'wb')
save_file = PdfFileWriter()
for name_i in pdf_name_list:
file_i = PdfFileReader(open(path + "\\" + name_i, 'rb'))
for pageNum in range(file_i.numPages):
page = file_i.getPage(pageNum)
save_file.addPage(page)
save_file.write(outputfile)
outputfile.close()
这里还有一个
import PyPDF2 as pp2
import os
path = r"XXX\YYY" # 存放多个PDF文档的文件夹路径
filenamelist = os.listdir(path)
pdfWriter = pp2.PdfFileWriter()
def addnewpdf(pr):
for pageNum in range(pr.numPages):
pageObj = pr.getPage(pageNum)
pdfWriter.addPage(pageObj)
for i in filenamelist:
pdfFileObj_i = open(path+"/"+i, "rb")
pdfreader_i = pp2.PdfFileReader(pdfFileObj_i ,strict=False) # ) #
addnewpdf(pdfreader_i)
pdfWriter.write(open(r'EEE\\aaa.pdf', "wb")) # 合并以后的PDF文件路径
2.重新生成PDF文件
下面这段代码是将一个已有的PDF文件重新生成一次。
这个操作的背景是这样的:有些PDF源文档很奇怪,你可以从上面复制文字,在文档内进行搜索,但是没有办法添加书签。而这三项尤其是添加书签是一个文档从废变宝的基础。采用虚拟打印的方式可以部分解决这个问题,但是虚拟打印的PDF是没有办法再复制文字以及在文档内搜索了。
这种情况下用Python脚本处理这个问题就两全其美了,代码如下:
import PyPDF2 as pp2
import os
path = r"XXXX\YYYYY" # 存放多个PDF文档的文件夹路径
filenamelist = os.listdir(path)
def create_another_file(file_path):
pdfFileObj_i = open(file_path, "rb")
pdfreader_i = pp2.PdfFileReader(pdfFileObj_i, strict=False)
for pageNum in range(pdfreader_i.numPages):
pageObj = pdfreader_i.getPage(pageNum)
pdfWriter.addPage(pageObj)
for i in filenamelist:
pdfWriter = pp2.PdfFileWriter()
file_path = path + "\\" + i
create_another_file(file_path)
pdfWriter.write(open(path + "\\test" + i, "wb")) # 重新生成的PDF文件