zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    【设计模式】适配器
    【c++算法】变序性算法
    【电信业务】【原则与规范】TMF的NGOSS
    【电信业务】【原则与规范】ITU的TMN
    【c++算法】排序算法
    家后
    【设计模式】桥接
    【电信业务】【原则与规范】SOA 面向服务架构
    UIImage转换成UIView
    ASIHTTPREQUEST网络加载图片
  • 原文地址:https://www.cnblogs.com/huaobin/p/15677191.html
Copyright © 2011-2022 走看看