一、安装Python 有关PDF文件的包:PyPDF2、fitz、PyPDF2、PyMuPDF
二、PDF分割
代码:1、逐页分割 2、选择分割
from PyPDF2 import PdfFileWriter, PdfFileReader
# sp - 开始页(包含); ep - 结束页(包含);pdf_file_: 想要分割文件,out_name:分割文件名称
def save_selected_pages(sp, ep, pdf_file_, out_name):
output = PdfFileWriter()
for i in range(sp - 1, ep):
output.addPage(pdf_file_.getPage(i))
outputStream = open(out_name, "wb")
output.write(outputStream)
outputStream.close()
def save_everypage(pdf_file_):
for i in range(0,pdf_file.getNumPages()):
output = PdfFileWriter()
output.addPage(pdf_file_.getPage(i))
outputEverypage = open("{}.pdf".format(str(i)),"wb")
output.write(outputEverypage)
outputEverypage.close()
# 读入文件
pdf_file = PdfFileReader(open("时政要点.pdf", "rb"))
shuru = int(input("1、逐页分割\n2、选择分割\n请输入:"))
if (shuru==1):
save_everypage(pdf_file)
print("分割成功!")
elif (shuru==2):
sp = int(input("请输入开始页:"))
ep = int(input("请输入结束页:"))
save_selected_pages(sp, ep, pdf_file, "{}-{}.pdf".format(sp,ep))
print("分割成功!")
else:
print("输入错误!!!")
三、PDF合并
1、PDF文档合并
import PyPDF2
def PDFmerger(pdfname,outpdfname):
#创建一个PDF合并对象
pdfmerger = PyPDF2.PdfFileMerger()
#逐个合并PDF
for pdf in pdfname:
with open(pdf,"rb") as p:
pdfmerger.append(p)
pdfmerger.write(open(outpdfname,"wb"))
pdfname = ["1.pdf","2.pdf"]
outpdfname = "合并文档.pdf"
PDFmerger(pdfname,outpdfname)
print("合并成功!")
2、选择PDF中内容合并
from PyPDF2 import PdfFileMerger
#创建一个PDF合并对象
pdf = PdfFileMerger()
pdf1 = open("1.pdf","rb")
pdf2 = open("2.pdf","rb")
#将 2.pdf中前2页合并到pdf对象第一位置
pdf.merge(position=0,fileobj=pdf2,pages=(0,1))
#将 1.pdf中第1页合并到pdf对象第二位置
pdf.merge(position=1,fileobj=pdf1,pages=(0,1))
#保存
pdf.write("合并文档.pdf")
print("合并成功!")
四、PDF转换图片
需用到 fitz、PyPDF2、PyMuPDF 库
注:.py 文件和PDF文件放在同一文件夹下,代码部分只需修改pdfname,录入正确pdf文件名即可。
import PyPDF2
import fitz
#获取pdf文件名
def num(pdfname):
l = pdfname.split(".")
return l[0]
pdfname = "时政要点.pdf"
w = fitz.open(pdfname)
m = num(pdfname)
pdf = PyPDF2.PdfFileReader(pdfname)
#循环并转换保存PDF中每一页
for pg in range(0,pdf.getNumPages()):
page = w.load_page(pg)
pix = page.get_pixmap()
#按照文件名第-页保存转换图片
pix.save("{}第{}页.jpg".format(m,pg+1))
print("转换成功!")