• Python处理pdf文件库


    工作中可能会涉及处理pdf文件,PyPDF2就是这样一个库, 使用它可以轻松的处理pdf文件,它提供了读、写、分割、合并、文件转换等多种操作。官方地址:http://mstamy2.github.io/PyPDF2/

    安装

    1. RPM式系统(Redhat、CentOS)

    pip install pypdf2
    

      2. DEB式系统(Debian、Ubuntu)以下任一

    pip install pypdf2
    apt install python-pypdf2
    

      3. Windows

    pip install pypdf2
    

     

    使用

    PyPDF2 包含了 PdfFileReader PdfFileMerger PageObject PdfFileWriter 四个常用的主要 Class。

    简单读写

    from PyPDF2 import PdfFileReader, PdfFileWriter
    readFile = 'read.pdf'
    writeFile = 'write.pdf'
    # 获取一个 PdfFileReader 对象
    pdfReader = PdfFileReader(open(readFile, 'rb'))
    # 获取 PDF 的页数
    pageCount = pdfReader.getNumPages()
    print(pageCount)
    # 返回一个 PageObject
    page = pdfReader.getPage(i)
    # 获取一个 PdfFileWriter 对象
    pdfWriter = PdfFileWriter()
    # 将一个 PageObject 加入到 PdfFileWriter 中
    pdfWriter.addPage(page)
    # 输出到文件中
    pdfWriter.write(open(writeFile, 'wb'))
    

      

    合并分割 PDF

     

    from PyPDF2 import PdfFileReader, PdfFileWriter
    def split_pdf(infn, outfn):
        pdf_output = PdfFileWriter()
        pdf_input = PdfFileReader(open(infn, 'rb'))
        # 获取 pdf 共用多少页
        page_count = pdf_input.getNumPages()
        print(page_count)
        # 将 pdf 第五页之后的页面,输出到一个新的文件
        for i in range(5, page_count):
            pdf_output.addPage(pdf_input.getPage(i))
        pdf_output.write(open(outfn, 'wb'))
    def merge_pdf(infnList, outfn):
        pdf_output = PdfFileWriter()
        for infn in infnList:
            pdf_input = PdfFileReader(open(infn, 'rb'))
            # 获取 pdf 共用多少页
            page_count = pdf_input.getNumPages()
            print(page_count)
            for i in range(page_count):
                pdf_output.addPage(pdf_input.getPage(i))
        pdf_output.write(open(outfn, 'wb'))
    if __name__ == '__main__':
        infn = 'infn.pdf'
        outfn = 'outfn.pdf'
        split_pdf(infn, outfn)
    

      

    其他命令

    如果是要修改一个已有的 pdf 文件,可以将 reader 的页面添加到 writer 中:

    pdfWriter.appendPagesFromReader(reader)

    添加书签:

    pdfWriter.addBookmark(title, pagenum, parent=parent)

  • 相关阅读:
    精益创业和画布实战(2):皇包车和易途8,中文包车游世界
    精益创业和画布实战(2):皇包车和易途8,中文包车游世界
    互联网公司的技术体系
    互联网公司的技术体系
    Android开发——告诉你Adapter应该写在Activity里面还是外面
    Android开发——Android手机屏幕适配方案总结
    09-抽象工厂
    08-工厂方法
    07-简单工厂(不属于设计模式)
    06-开闭原则(OCP)
  • 原文地址:https://www.cnblogs.com/huaobin/p/15677191.html
Copyright © 2020-2023  润新知