美文网首页
Task04:Python与pdf

Task04:Python与pdf

作者: 蔓藤树下的甜蜜 | 来源:发表于2021-06-23 22:18 被阅读0次

    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

          本文链接:https://www.haomeiwen.com/subject/wljiyltx.html