Task04:Python与pdf

python操作Pdf是办公自动化中很常用的,初级的pdf自动化包括pdf文档的拆分、合并、提取等操作,更高级的还包括word与pdf互转等。鉴于刚开始接触python自动化,初级一些比较常用的操作就够用了。

1、常用的python操作pdf库,PyPDF2和pdfplumber,这两个库各有优点,其中PyPDF2可以更好的读取、写入、分割、合并PDF文件,而pdfplumber可以更好的读取PDF文件中内容和提取PDF中的表格。
2、批量拆分、批量合并
拆分和合并是逆操作,拆分就是把一个完整的pdf分割成几个小的pdf,合并是把想要顺序的小的pdf合并成一个大的pdf,代码如下:
拆分代码:

def split_pdf(filename, filepath, save_dirpath, step=5):
"""
拆分PDF为多个小的PDF文件,
@param filename:文件名
@param filepath:文件路径
@param save_dirpath:保存小的PDF的文件路径
@param step: 每step间隔的页面生成一个文件,例如step=5,表示0-4页、5-9页...为一个文件
@return:
"""
if not os.path.exists(save_dirpath):
    os.mkdir(save_dirpath)
pdf_reader = PdfFileReader(filepath)
# 读取每一页的数据
pages = pdf_reader.getNumPages()
for page in range(0, pages, step):
    pdf_writer = PdfFileWriter()
    # 拆分pdf,每 step 页的拆分为一个文件
    for index in range(page, page+step):
        if index < pages:
            pdf_writer.addPage(pdf_reader.getPage(index))
    # 保存拆分后的小文件
    save_path = os.path.join(save_dirpath, filename+str(int(page/step)+1)+'.pdf')
    print(save_path)
    with open(save_path, "wb") as out:
        pdf_writer.write(out)

print("文件已成功拆分,保存路径为:"+save_dirpath)

合并代码:

def concat_pdf(filename, read_dirpath, save_filepath):
"""
合并多个PDF文件
@param filename:文件名
@param read_dirpath:要合并的PDF目录
@param save_filepath:合并后的PDF文件路径
@return:
"""
pdf_writer = PdfFileWriter()
# 对文件名进行排序
list_filename = os.listdir(read_dirpath)
list_filename.sort(key=lambda x: int(x[:-4].replace(filename, "")))
for filename in list_filename:
    print(filename)
    filepath = os.path.join(read_dirpath, filename)
    # 读取文件并获取文件的页数
    pdf_reader = PdfFileReader(filepath)
    pages = pdf_reader.getNumPages()
    # 逐页添加
    for page in range(pages):
        pdf_writer.addPage(pdf_reader.getPage(page))
# 保存合并后的文件
with open(save_filepath, "wb") as out:
    pdf_writer.write(out)
print("文件已成功合并,保存路径为:"+save_filepath)

3、提取文字内容、提取表格内容、提取图片内容
涉及到具体pdf内容操作要用到pdfplumber这个库。其中提取文字用到extract_text这个函数,提取表格内容用extract_table这个函数。提取图片要用到PyMuPDF这个模块。其中提取文字就是把一页整体的文字直接提取出来,表格是直接可以提取出excel。具体操作见参考链接。
4、转换pdf2image,添加水印,文档加密解密

参考链接:https://github.com/datawhalechina/team-learning-program/blob/master/OfficeAutomation/Task04%20Python%E6%93%8D%E4%BD%9CPDF.md

你可能感兴趣的:(Task04:Python与pdf)