PDF文件转换——python

一、安装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("转换成功!")

输出结果:
PDF文件转换——python_第1张图片
注:代码中大量用到列表推导式,详见列表推导式——Python

你可能感兴趣的:(python)