当前位置: 首页 > news >正文

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

本篇介绍利用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\PythonIn [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.pdfCreates 4up.my.pdf with a single output page for every
4 input pages.
'''import sys
import osfrom pdfrw import PdfReader, PdfWriter, PageMergedef get4(srcpages):scale = 0.5srcpages = PageMerge() + srcpagesx_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 0page.y = 0 if i & 2 else y_incrementreturn 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.lryc.cn/news/123914.html

相关文章:

  • 【软件工程】软件测试
  • Android性能优化——内存优化
  • Android Studio实现图形验证码
  • JAVA面试数据库篇
  • Android高手进阶教程(三)之----Android 中自定义View的应用.
  • 第一百一十三回 dart中的getter/setter方法
  • 搭建Docker环境
  • 微服务08-多级缓存
  • Intel汇编和ATT汇编的区别?
  • MongoDB 备份与恢复
  • 探讨uniapp的网络通信问题
  • 【左神算法刷题班】第18节:汉诺塔问题、岛屿问题、最大路径和问题
  • 网络安全体系架构介绍
  • JSP实训项目设计报告—MVC简易购物商城
  • 41、可靠传输——停等ARQ
  • RK3568 cmake编译
  • 详细安装配置django
  • HTTP之cookie基础学习
  • 观察者模式和发布订阅模式
  • 利用ViewModel和LiveData进行数据管理
  • 前后端分离------后端创建笔记(05)用户列表查询接口(下)
  • 浅谈GIS和三维GIS的区别?
  • ArcGIS Maps SDK for JavaScript系列之三:在Vue3中使用ArcGIS API加载三维地球
  • 设计列表和超链接
  • rust包跨平台编译,macbook ,linux
  • JAVA集合-List
  • Python|OpenCV-绘制图形和添加文字的方法(2)
  • 使用GO编译wasm文件并在nodejs中使用
  • BM22 比较版本号
  • 【Java】Maven配置文件帮助文档(settings.xml 和 pom.xml)