首页 > 软件开发 > PYTHON >

利用Python对PDF文件进行分割,合并

来源:互联网 2023-03-16 19:29:20 526

不需要Adobe acrobat pro,只需要几行Python代码就可以实现pdf文件分割,合并,指定页旋转!YV5办公区 - 实用经验教程分享!

利用Python对PDF文件进行分割,合并YV5办公区 - 实用经验教程分享!

利用Python对PDF文件进行分割,合并YV5办公区 - 实用经验教程分享!

利用Python对PDF文件进行分割,合并YV5办公区 - 实用经验教程分享!

工具/原料

  • pypdf包
  • python 2.7安装包

方法/步骤

  • 1

    需要安装pypdf包,可以到其官网(http://pybrary.net/pyPdf/)下载,也可以可以直接下载:http://pybrary.net/pyPdf/pyPdf-1.13.win32.exe。也可以试用pip命令:pip install pypdfYV5办公区 - 实用经验教程分享!

    利用Python对PDF文件进行分割,合并YV5办公区 - 实用经验教程分享!

    利用Python对PDF文件进行分割,合并YV5办公区 - 实用经验教程分享!

  • 2

    编写代码,可以参考其官网中的例子,学习相关的APIYV5办公区 - 实用经验教程分享!

    利用Python对PDF文件进行分割,合并YV5办公区 - 实用经验教程分享!

  • 2该信息非法爬取自百度经验
  • 3

    也可以就复制我的代码也行,已经先实现了从pdf文件中抽取指定范围的页面小重新生成一个pdf文件:YV5办公区 - 实用经验教程分享!

    def createNewBooks(pdf_file, stPage, endPage, filename='my2.pdf',output_dir='D:/pdf'):YV5办公区 - 实用经验教程分享!

    if not os.path.exists(output_dir):YV5办公区 - 实用经验教程分享!

    os.mkdir(output_dir) YV5办公区 - 实用经验教程分享!

    YV5办公区 - 实用经验教程分享!

    input_stream = file(pdf_file, 'rb')YV5办公区 - 实用经验教程分享!

    YV5办公区 - 实用经验教程分享!

    pdf_input = PdfFileReader(input_stream)YV5办公区 - 实用经验教程分享!

    pdf_output = PdfFileWriter()YV5办公区 - 实用经验教程分享!

    YV5办公区 - 实用经验教程分享!

    i=stPageYV5办公区 - 实用经验教程分享!

    YV5办公区 - 实用经验教程分享!

    while iendPage:YV5办公区 - 实用经验教程分享!

    page = pdf_input.getPage(i) #选取需要页面,需要注意的是第一页的编号是0YV5办公区 - 实用经验教程分享!

    pdf_output.addPage(page) #将选好的页面加入到新的pdf中YV5办公区 - 实用经验教程分享!

    i =1YV5办公区 - 实用经验教程分享!

    YV5办公区 - 实用经验教程分享!

    filename=str(stPage) filename #给新的pdf文件命名,这个可以保证不重复覆盖YV5办公区 - 实用经验教程分享!

    YV5办公区 - 实用经验教程分享!

    outputfilename = output_dir '/' filenameYV5办公区 - 实用经验教程分享!

    output_stream = file(outputfilename,'wb')YV5办公区 - 实用经验教程分享!

    pdf_output.write(output_stream)YV5办公区 - 实用经验教程分享!

    output_stream.close()YV5办公区 - 实用经验教程分享!

    input_stream.close()YV5办公区 - 实用经验教程分享!

    return TrueYV5办公区 - 实用经验教程分享!

    利用Python对PDF文件进行分割,合并YV5办公区 - 实用经验教程分享!

  • 4

    在日常办公中,我们经常碰到需要将页数很多,且双面都有内容的资料扫描整理,方法可以有:1)逐页扫描;这个耗时较长 2)将反面先复印,然后按顺序排列好,进行扫描,这个同样浪费纸张 3)分开正反面进行分别扫描,然后用pypdf进行按页面进行合成:YV5办公区 - 实用经验教程分享!

    #pdfone为扫描的正面YV5办公区 - 实用经验教程分享!

    #pdftwo为扫描的背面YV5办公区 - 实用经验教程分享!

    #本函数实现将两个扫描文件按原有的顺序合并起来YV5办公区 - 实用经验教程分享!

    def merge(pdf_one, pdf_two, filename='my2.pdf',output_dir='D:/pdf/'):YV5办公区 - 实用经验教程分享!

    input_one = file(pdf_one, 'rb')YV5办公区 - 实用经验教程分享!

    input_two = file(pdf_two, 'rb')YV5办公区 - 实用经验教程分享!

    YV5办公区 - 实用经验教程分享!

    pdf_input_one = PdfFileReader(input_one)YV5办公区 - 实用经验教程分享!

    pdf_input_two = PdfFileReader(input_two)YV5办公区 - 实用经验教程分享!

    YV5办公区 - 实用经验教程分享!

    numOne = pdf_input_one.getNumPages()YV5办公区 - 实用经验教程分享!

    numTwo = pdf_input_two.getNumPages()YV5办公区 - 实用经验教程分享!

    print numOne, numTwoYV5办公区 - 实用经验教程分享!

    pdf_output = PdfFileWriter()YV5办公区 - 实用经验教程分享!

    YV5办公区 - 实用经验教程分享!

    index_one = 0YV5办公区 - 实用经验教程分享!

    index_two = numTwo-1YV5办公区 - 实用经验教程分享!

    while True:YV5办公区 - 实用经验教程分享!

    if index_one == numOne: breakYV5办公区 - 实用经验教程分享!

    print index_one, index_twoYV5办公区 - 实用经验教程分享!

    page1 = pdf_input_one.getPage(index_one)YV5办公区 - 实用经验教程分享!

    pdf_output.addPage(page1)YV5办公区 - 实用经验教程分享!

    page2 = pdf_input_two.getPage(index_two)YV5办公区 - 实用经验教程分享!

    pdf_output.addPage(page2)YV5办公区 - 实用经验教程分享!

    index_one = 1YV5办公区 - 实用经验教程分享!

    index_two -= 1YV5办公区 - 实用经验教程分享!

    YV5办公区 - 实用经验教程分享!

    pdf_name = output_dir filenameYV5办公区 - 实用经验教程分享!

    YV5办公区 - 实用经验教程分享!

    output_stream = file( pdf_name,'wb')YV5办公区 - 实用经验教程分享!

    pdf_output.write(output_stream)YV5办公区 - 实用经验教程分享!

    output_stream.close()YV5办公区 - 实用经验教程分享!

    input_one.close()YV5办公区 - 实用经验教程分享!

    input_two.close()YV5办公区 - 实用经验教程分享!

    print 'Done!'YV5办公区 - 实用经验教程分享!

    利用Python对PDF文件进行分割,合并YV5办公区 - 实用经验教程分享!

    利用Python对PDF文件进行分割,合并YV5办公区 - 实用经验教程分享!

    利用Python对PDF文件进行分割,合并YV5办公区 - 实用经验教程分享!

  • 注意事项

    • pypdf中pdf文件页码从0开始
    • pypdf已经不再更新,可以试试pypdf2

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!YV5办公区 - 实用经验教程分享!


    标签: python

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码