zoukankan      html  css  js  c++  java
  • [转]PyPDF2详解

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

    安装

    1. RPM式系统(Redhat、CentOS)

    1
    pip install pypdf2

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

    1
    2
    pip install pypdf2
    apt install python-pypdf2

    3. Windows

    1
    pip install pypdf2

    使用

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

    简单读写

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    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 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 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)


    ---------------------
    作者:py小蟒蛇
    来源:CNBLOGS
    原文:https://www.cnblogs.com/pyxiaomangshe/p/7918839.html
    版权声明:本文为作者原创文章,转载请附上博文链接!

     
  • 相关阅读:
    js打印指定元素内容
    c# RedisHelper
    T4生成整理
    T4随记
    c# 文本超长截断
    mysql自动安装教程说明
    完全卸载mysql免安装版
    解决WebClient或HttpWebRequest首次连接缓慢问题
    c# 停靠窗体
    c#透明panel
  • 原文地址:https://www.cnblogs.com/vilogy/p/12333726.html
Copyright © 2011-2022 走看看