掌握Python的X篇_32_使用python编辑pdf文件_pdfrw

news2025/1/11 14:14:49

本篇介绍利用python操作pdf文件,我们平时也会有合并和拆分pdf的需求,此时我们就可以使用本节内容。

文章目录

  • 1. pdfrw的安装
  • 2. 切分pdf文件
  • 3. pdfrw官网及实现一版四面的实例

1. pdfrw的安装

pip install pdfrw

官网地址:https://github.com/pmaupin/pdfrw

2. 切分pdf文件

import pdfrw
inputpdf = pdfrw.PdfReader("AbstractAlgebra.pdf") 
outputpdf = pdfrw.PdfWriter("index.pdf")
  • PdfReader:打开pdf文件,返回一个可以读的pdf对象。
  • PdfWriter:打开(创造)一个pdf文件,返回可以写的pdf对象(只是在内存中打开,并未写文件,调用保存方法之后就会写入)

在以上的pd对象中,包含了各种方法,用于对应操作pdf文件。

  • pages属性:页码
  • addpages方法:可以往页面内添加东西
In [1]: import pdfrw
In [3]: cd E:\MyselfCode\ShellMad\Python
E:\MyselfCode\ShellMad\Python

In [4]: pwd
Out[4]: 'E:\\MyselfCode\\ShellMad\\Python'

In [5]: inputpdf = pdfrw.PdfReader("AbstractAlgebra.pdf")
In [7]: outputpdf = pdfrw.PdfWriter("index.pdf")
In [8]: outputpdf.addpages(inputpdf.pages[0:2]) #将inputpdf的第1页开始的2页添加到outputpdf中
Out[8]: <pdfrw.pdfwriter.PdfWriter at 0x2b206763f70>

In [9]: outputpdf.write() #写入磁盘,此时才会真的有新的pdf文件生成

以上代码运行结果:
在这里插入图片描述

3. pdfrw官网及实现一版四面的实例

上面只是pdfrw的冰山一角,官网中给出了更多的例子,以下是官网中给出的例子
在这里插入图片描述
以下是4up.py(将指定的pdf变成一页中集成4页内容-一版四页)的脚本内容,这是在linux中使用的,在wind的使用也是比较简单的,就不讨论了

#!/usr/bin/env python

'''
usage:   4up.py my.pdf

Creates 4up.my.pdf with a single output page for every
4 input pages.
'''

import sys
import os

from pdfrw import PdfReader, PdfWriter, PageMerge


def get4(srcpages):
    scale = 0.5
    srcpages = PageMerge() + srcpages
    x_increment, y_increment = (scale * i for i in srcpages.xobj_box[2:])
    for i, page in enumerate(srcpages):
        page.scale(scale)
        page.x = x_increment if i & 1 else 0
        page.y = 0 if i & 2 else y_increment
    return srcpages.render()


inpfn, = sys.argv[1:]
outfn = '4up.' + os.path.basename(inpfn)
pages = PdfReader(inpfn).pages
writer = PdfWriter(outfn)
for index in range(0, len(pages), 4):
    writer.addpage(get4(pages[index:index + 4]))
writer.write()

我直接拷贝到vscode中运行没有成功,后期使用到了再细究把,整体效果如下:
在这里插入图片描述
4. 学习视频地址:使用python编辑pdf文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/870810.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式之责任链模式【Java实现】

责任链&#xff08;Chain of Resposibility&#xff09; 模式 概念 责任链&#xff08;chain of Resposibility&#xff09; 模式&#xff1a;为了避免请求发送者与多个请求处理者耦合在一起&#xff0c;于是将所有请求的处理者 通过前一对象记住其下一个对象的引用而连成一条…

Mysql中插入数据,并返回自增主键的值

创建数据库和表使用 insert into 进行插入数据使用 RETURN_GENERATED_KEYS 进行返回插入的这条数据 具体方法如下&#xff1a; Testvoid addGetPk(){try{Statement stmt conn.createStatement();String sql String.format("insert into t_students values(null,%s,%s,%d…

Git:在本地电脑上如何使用git?

git 版本&#xff1a; 2.40.1.windows.1 文章目录 一. 使用git之前你必须要理解的几个概念1.1 理解工作区、版本库、暂存区的概念1.2 提交Git版本库的步骤【分两步执行】 二. Git本地库实战2.1 初始化版本库2.2 新建 & 提交 & 状态2.3 查看日志2.4 回退 & 穿梭 &am…

Linux驱动-基于Buildroot构建系统镜像后实现基于QT项目开发之环境配置

Linux驱动-基于Buildroot构建系统镜像后实现基于QT项目开发之环境配置 需求BuildRootUboot的仓库地址和commit idKernel 的仓库地址和commit id BuildRoot已编译库在Windows上的Create上创建项目编译QT项目 需求 基于Build root编译整个镜像后&#xff0c;如何开发自己的基于Q…

D* 算法完全解析(应该是全网最详细的吧)

花了几天时间学习了下 D* 算法&#xff0c;只能说熟悉了一下流程&#xff0c;远不能说掌握&#xff0c;算法实在是非常巧妙 参考 《制造车间无人搬运系统调度方法研究》 《基于D*Lite算法的移动机器人路径规划研究》 人工智能: 自动寻路算法实现(四、D、D*算法) D* 算法 D*路径…

Pycharm社区版连接WSL2中的Mysql8.*

当前时间2023.08.13&#xff0c;Windows11中默认的WSL版本已经是2了&#xff0c;在WSL2中默认的Ubuntu版本已经是22.04&#xff0c;而Ubuntu22.04中默认的Mysql版本已经是8.*。 Wsl 2 中安装mysql WSL2中安装Mysql的方法参考自微软官方文档【开始使用适用于 Linux 的 Windows …

网络请求中,token和cookie有什么区别

HTTP无状态&#xff0c;每次请求都要携带cookie&#xff0c;以帮助识别用户身份&#xff1b; 服务端也可以向客户端set-cookie&#xff0c;cookie大小限制为4kb&#xff1b; cookie默认有跨域限制&#xff0c;不跨域共享和传递&#xff0c;例如&#xff1a; 现代浏览器开始禁…

使用Python和pyodbc库将文件信息插入Access数据库

将文件信息插入 Access 数据库的博客文章示例&#xff1a; 简介&#xff1a; 在日常编程工作中&#xff0c;我们经常需要处理文件和文件夹。有时&#xff0c;我们需要遍历文件夹中的所有文件&#xff0c;并将文件的路径、类型、文件名以及修改日期和创建日期等信息保存到数据库…

基于MIV的神经网络变量筛选

1.案例背景 一般神经网络中所包含的网络输人数据是研究者根据专业知识和经验预先选择好的,然而在许多实际应用中,由于没有清晰的理论依据,神经网络所包含的自变量即网络输入特征难以预先确定,如果将一些不重要的自变量也引入神经网络,会降低模型的精度,因此选择有意义的自变量特…

Flask 上下文是什么 ?

哈喽大家好&#xff0c;我是咸鱼。今天我们来聊聊什么是 Flask 上下文 咸鱼在刚接触到这个概念的时候脑子里蹦出的第一个词是 CPU 上下文 今天咸鱼希望通过这篇文章&#xff0c;让大家能够对 Flask 上下文设计的初衷以及应用有一个基本的了解 Flask 上下文 我们在使用 Flask 开…

【算法基础19-模拟队列】

模拟队列 算法示意图 算法的伪代码 例题 实现一个队列&#xff0c;队列初始为空&#xff0c;支持四种操作&#xff1a; push x – 向队尾插入一个数 x&#xff1b;pop – 从队头弹出一个数&#xff1b;empty – 判断队列是否为空&#xff1b;query – 查询队头元素。 现在要…

不做Linux就没前途吗?

答案当然是——并不会 我晚上回来的时候跟一个今年的毕业生聊天&#xff0c;他入职了一家公司&#xff0c;但是从事的不是Linux相关的工作。 我这里想说的是&#xff0c;做Linux可以赚钱&#xff0c;Linux现在是全世界最牛逼的开源项目一点都不为过&#xff0c;但是Linux也不是…

环境与能源创新专题:地级市绿色创新、碳排放与环境规制数据

数据简介&#xff1a;推动绿色发展&#xff0c;促进人与自然和谐共生是重大战略举措。绿色发展强调“绿水青山就是金山银山”&#xff0c;人与自然和谐共生重在正确处理生态环境保护与经济发展的关系。在着力于实现绿色发展的过程中&#xff0c;绿色创新是绿色发展的重要驱动因…

时序预测 | Matlab实现基于RF随机森林的电力负荷预测模型

文章目录 效果一览基本介绍模型描述源码设计学习小结参考资料效果一览 基本介绍 时序预测 | Matlab实现基于RF随机森林的电力负荷预测模型 电力负荷预测是指通过对历史电力负荷数据分析,来预测未来某个时间段内的电力负荷需求。这项预测对于电力系统的运行和调度至关重要,可以…

CSS实现左侧固定,右侧自适应(5种方法)

<div class"father"><!-- 左右div不能调换顺序来写 --><div class"left">固定宽度区</div><div class"right">自适应区</div> </div> 一、利用左侧浮动float右侧margin-left /* 利用浮动floatmargin…

【Linux操作系统】深入理解系统调用中的read和write函数

在操作系统中&#xff0c;系统调用是用户程序与操作系统之间进行交互的重要方式。其中&#xff0c;read和write函数是常用的系统调用函数&#xff0c;用于在用户程序和操作系统之间进行数据的读取和写入。本文将深入介绍read和write函数的工作原理、用法以及示例代码&#xff0…

chatGPT小白快速入门-002:一文看懂什么是chatGPT

一、前言 本文是《chatGPT小白快速入门培训课程》的第002篇文章&#xff1a;一文看懂什么是chatGPT&#xff0c;全部内容采用chatGPT和chatGPT开源平替软件生成。完整内容大纲详见&#xff1a;《chatGPT小白快速入门课程大纲》。 本系列文章&#xff0c;参与&#xff1a; AIGC…

对doccano自动标注使用的默认UIE模型进行微调以提高特定领域的实体识别能力,提高标注速度

预处理doccano标注的数据 该章节详细说明如何通过doccano.py脚本对doccano平台导出的标注数据进行转换&#xff0c;一键生成训练/验证/测试集。 在本地部署UIE模型 下载模型压缩包&#xff1a; 本来是要通过一定的方法&#xff08;GitZip&#xff09;才能在整体的大项目仓库…

C++初阶之一篇文章教会你list(模拟实现)

list&#xff08;模拟实现&#xff09; list模拟实现list_node节点结构定义std::__reverse_iterator逆向迭代器实现list迭代器 __list_iterator定义list类成员定义list成员函数定义1.begin()、end()、rbegin()和rend()2.empty_init()3.构造函数定义4.swap5.析构函数定义6.clear…

HCIP BGP 实验

​​​​​​​ 拓扑图 r1: <Huawei>sys [Huawei]sys r1 [r1]int g 0/0/1 [r1-GigabitEthernet0/0/1]ip add 12.1.1.1 24 [r1-GigabitEthernet0/0/1]int lo0 [r1-LoopBack0]ip add 1.1.1.1 24 [r1-LoopBack0]ospf network-type broadcast [r1-bgp]peer 12.1.1.2 as-nu…