首页 > 编程语言 >python PyPDF2 切割PDF文件

python PyPDF2 切割PDF文件

时间:2024-10-21 12:21:11浏览次数:7  
标签:right mediabox python percent PyPDF2 file PDF page out

python PyPDF2 切割PDF文件

from PyPDF2 import PdfReader, PdfWriter

def split_pdf(in_file,out_file,orientation="vertical",percent=0.5):
    """
    :param in_file: 待拆分的pdf文件
    :param out_path: 拆分成单页的pdf文件的存储路径
    :param orientation: 切割方向 horizontal 水平切割 , vertical 垂直切割
    :param percent: 百分比 第一个页面的百分比
    :return: 无
    """
    with open(in_file, 'rb') as in_file:
        reader = PdfReader(in_file)
        writer = PdfWriter()
        number_of_pages = len(reader.pages)
        for i in range(number_of_pages):
            page = reader.pages[i]
            page2 = reader.pages[i].clone(PdfWriter(),True)

            if orientation == 'vertical':
                page.mediabox.upper_right = (
                    float(page.mediabox.right) * percent,
                    page.mediabox.top
                )
                page2.mediabox.lower_left = (
                    float(page2.mediabox.right) * percent,
                    0
                )  
            else:
                page.mediabox.lower_right = (
                    page.mediabox.right,
                    float(page.mediabox.top)*percent
                )
                page2.mediabox.upper_right = (
                    page.mediabox.right,
                    float(page.mediabox.top)*percent
                )

            writer.add_page(page)
            writer.add_page(page2)
        with open(out_file,"wb") as fp:
            writer.write(fp)

if __name__ == '__main__':
    in_File = './example.pdf'
    out_file = './out.pdf'  # 生成输出文件
    orientation = 'vertical' #切割方向 horizontal 水平切割 , vertical 垂直切割
    percent = 0.5 # 百分比 第一个页面的百分比
    split_pdf(in_File, out_file,orientation,percent)

  安装库: pip install PyPDF2

 

标签:right,mediabox,python,percent,PyPDF2,file,PDF,page,out
From: https://www.cnblogs.com/shaoyang0123/p/18489185

相关文章

  • Python Bagging算法详解与应用案例
    这里写目录标题PythonBagging算法详解与应用案例引言一、Bagging的基本原理1.1Bagging的概念1.2Bagging的步骤1.3Bagging的优势与挑战二、Python中Bagging的面向对象实现2.1`DecisionTree`类的实现2.2`Bagging`类的实现2.3`Trainer`类的实现三、案例分析3.1......
  • Python中的深拷贝与浅拷贝
    目录1.可变对象和不可变对象2.用=赋值的问题3.copy模块登场4.重新认识列表对象5.浅拷贝,深拷贝浅拷贝(copy.copy())一维列表的浅拷贝深拷贝(copy.deepcopy())浅拷贝,深拷贝,直接赋值的区别1.可变对象和不可变对象在Python中,数据类型可以分为两大类:可变对象和不可变对象。常......
  • 使用Python解决化学问题的实用指南
    使用Python解决化学问题的实用指南Python作为一种高级编程语言,因其简洁的语法、强大的库支持和活跃的社区,在科学研究领域得到了广泛应用,特别是在化学领域。Python提供了丰富的科学计算和数据处理库,如NumPy、SciPy、Pandas等,以及专为化学设计的库,如RDKit、OpenBabel等,使得......
  • [oeasy]python037_ print函数参数_sep分隔符_separator
    print函数参数_sep分隔符_separator回忆上次内容上次了解了类型type本意来自于印记   添加图片注释,不超过140字(可选) 要特别注意type类型   添加图片注释,不超过140字(可选) 给函数传递参......
  • uv 基于rust 编写的python 包管理以及项目管理工具
    uv基于rust编写的python包管理以及项目管理工具包含的特性简单工具可以替换pip,pip-tools,pipx,poetry,pyenv等比pip快10-100倍安装以及管理python版本运行以及安装python应用运行脚本支持类似cargo模式的workspace磁盘空间高效说明对于希望提示快速python包下......
  • 基于YOLOv10的农场实时目标检测系统(python+pyside6界面+系统源码+可训练的数据集+也完
    摘要:        基于YOLOv10的农场实时目标检测系统,利用4393张图片(3905张训练集,488张验证集)进行模型训练,最终开发出一个高效的农场目标检测模型。为了方便用户操作和实时检测,本系统还开发了基于Python和PySide6的图形用户界面(GUI),实现了农场目标的实时检测功能。此外,为保......
  • 基于Python的自然语言处理系列(34):Huggingface 自定义分词器与数据集
            在自然语言处理(NLP)中,分词是将原始文本转换为模型可处理的数字形式的关键步骤。无论是情感分析、文本生成,还是问答系统,分词都决定了模型如何理解输入数据。Huggingface的transformers库提供了多种强大的分词工具,使我们可以灵活地加载、保存和使用预训练......
  • Python图像信息隐藏技术的实现<免费开题>全套源码+文章lw+毕业设计+课程设计+数据库+ppt
    Python图像信息隐藏技术的实现<免费开题>全套源码+文章lw+毕业设计+课程设计+数据库+ppt摘要在当下的时代中,人们获取信息的渠道随着网络的普及而变得非常的便捷。现在人们通过网络就能获得多种多样的、丰富多彩的信息内容。人们越来越希望能够通过网络进行信息的分享,从而......
  • 计算机毕业设计 基于Python的豆果美食推荐系统的设计与实现 Python毕业设计 Python毕
    博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌......
  • 计算机毕业设计 基于Python的人事管理系统的设计与实现 Python毕业设计 Python毕业设
    博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌......