zoukankan      html  css  js  c++  java
  • PyPDF2切割单页为两页

    # -*- coding: UTF-8 -*-  
    from PyPDF2 import PdfFileReader, PdfFileWriter
    import os
    
    def split_pdf(infile, out_path):
        """
        :param infile: 待拆分的pdf文件
        :param out_path: 拆分成单页的pdf文件的存储路径
        :return: 无
        """
    
        if not os.path.exists(out_path):
            os.makedirs(out_path)
        with open(infile, 'rb') as infile:
        
            pdfReader = PdfFileReader(infile)
            number_of_pages = pdfReader.getNumPages()  #计算此PDF文件中的页数
            
            for i in range(number_of_pages):
    
                page = pdfReader.getPage(i)
                width = float(page.mediaBox.getWidth())
                height = float(page.mediaBox.getHeight())
                #print(""+str(width)+" Height"+str(height))
    
                #top page
                pdfReader=PdfFileReader(infile)   #一定要重新读取,要不会报错。
                pdfWriter = PdfFileWriter()    #循环创建空白的pdf 
                page_top = pdfReader.getPage(i)
                page_top.mediaBox.lowerLeft = (0,height/2)
                page_top.mediaBox.lowerRight = (width,height/2)
                page_top.mediaBox.upperLeft = (0,height)
                page_top.mediaBox.upperRight = (width,height)
                pdfWriter.addPage(page_top)
                out_file_name = out_path + str(i+1)+'_top.pdf'
                with open(out_file_name, 'wb') as outfile:
                    pdfWriter.write(outfile) 
       
                #bottom page
                pdfReader=PdfFileReader(infile)   #一定要重新读取,要不会报错。
                pdfWriter = PdfFileWriter()    #循环创建空白的pdf
                page_buttom = pdfReader.getPage(i)
                page_buttom.mediaBox.lowerLeft = (0,0)
                page_buttom.mediaBox.lowerRight = (width,0)
                page_buttom.mediaBox.upperLeft = (0,height/2)
                page_buttom.mediaBox.upperRight = (width,height/2)
        
                pdfWriter.addPage(page_buttom)   
                out_file_name = out_path + str(i+1)+'_bottom.pdf' 
                with open(out_file_name, 'wb') as outfile:
                    pdfWriter.write(outfile) 
    
    
    if __name__ == '__main__':
        in_File = './1.pdf'
        out_Path = './Single/'  # 生成输出文件夹
        split_pdf(in_File, out_Path)
  • 相关阅读:
    Spring中获取数据库表主键序列
    java学习:ArrayList的实现及原理
    MyBatis SQL动态装配
    Unsupported major.minor version 51.0解决方法
    spring自动装配
    c# 窗口关闭方法
    C# 自定义集合类
    C#接口的实现和继承实践
    C# 开发COM组件供c++使用
    C# 创建和引入动态链接库dll文件
  • 原文地址:https://www.cnblogs.com/mysick/p/12702291.html
Copyright © 2011-2022 走看看