本篇介绍利用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文件