python程序设计PDF,python程序语言设计基础 pdf
1.PDF分割受疫情影响,只好在家上网络课,所以教材只能用电子版。但是一本教材是双扫描版,在iPad上看不太友好,所以我决定找个工具把PDF分成两半。
我在百度上查了图1的预分割PDF,发现在Adobe Acrobat软件中经常被裁剪。因为这根本不是Python,所以我找到了用Python处理PDF文件的方法。最后我找了一个名为PyPDF2的库来用这个库实现PDF分割。
首先,必须使用pip安装这个库:
pip安装PyPDF2
如果可以测量PDF的长宽比,连接左右裁剪,那么裁剪PDF的思路很简单,但是PyPDF2提供了这些功能。
# PdfFileReader模块用于导入pdf# PdfFileWriter模块创建要保存的pdffrompypdf2importpdfilereader。pdf文件编写器#1。pdf pdf _ input=pdf file reader(open( XXX.pdf ,Rb) # 2。要保存的pdf对象的create PDF _ output=PDF file writer(# 3。选择PDF阅读长宽比page=PDF _ input _ left.getpage (0)第一页0)Width=height=float(page . media box . getheight numpages))5 .modify page . media box . lower left=(x,Y)page . media box . upper pdf _ output . add page(page))7 .循环所有页面,然后输出文件为pdf文件pdf _ output.write open (XXX,pdf),pdf
图2 PyPDF2坐标是垂直缩放的,但是我们的PDF是水平缩放的,如下图所示。
图3纵横比PDF的示例相当于以下内容:
图4水平比例的PyPDF2坐标:
请注意,图5中旋转后水平刻度中的PyPDF2坐标与图1中的坐标不同。
知道PyPDF的坐标后,通过调整四个角的坐标,就可以得到左右两个PDF。对于左侧的PDF,相应的坐标如下:
图6左半部分的PyPDF2坐标设置如下。
page _ left . media box . lower left=(0,height/2 ) page _ left . media box . lower right=(width,height/2)page _ .
对应于图7右半部分中的PyPDF2坐标的坐标设置如下。
page _ right . media box . lower left=(0,0)page _ right . media box . lower right=(width,0 ) page _ right.mediabobot
从py pdf 2导入pdf文件生成器,PdfFileWriterinfile=慢鼠标多变量分析. pdf outfile=慢鼠标多变量分析split . pdf pdf _ input _ left=pdf filereader(pdf _ input _ right=pdf filereader(open(infile, Rb )(pdf _ output=PdfFileWriter)page=pdf _ input _ left . get page(0)width=float)page . media box . get page
page _ left . media box . lower left=(0,Height/2)page _ left . media box . lower right=(width,Height/2)page _ left . media box . upper left=(0,Height)page _ left . media box . upper right=(width,Height)pdf _ output . add page(page _ left)# right page _ right=pdf _ input _ right . get page(I)page _ right . media box . lower left=(0)page _ right . media box . lower right=.
图8转换后的PDF效果2。调整边缘转换后,发现PDF有这个黑边,我们可以通过调整相应的坐标来减少黑边现象:
图9 PDF黑边从PyPDF2导入PdfFileReader,PdfFileWriterdef pdf _ split(infile,outfile,left_margin=0,right_margin=0,down _ margin=0):pdf _ input _ left=PdfFileReader(open(infile, rb)) #读取切割为左边的pdf pdf _ input _ right=PdfFileReader(open(infile, rb)) #读取切割为右边的pdf pdf_output=PdfFileWriter() #定义要保存的pdf page=pdf _ input _ left。获取第(0)页#选取第一页来读取可移植文档格式文件的扩展名(可移植文档格式的缩写)的长宽宽度=浮动(第页。媒体盒。getwidth())height=float(page。媒体盒。getheight())page _ count=pdf _ input _ left。getnumpages()#读取可移植文档格式文件的扩展名(可移植文档格式的缩写)页数对于范围内的I(页数):#切割左边pdf page _ left=pdf _ input _ left。获取第(一)页_左。媒体盒。左下角=(0,height/2)page _ left。媒体盒。右下=(宽度,高度/2)page _ left。左上=(down _ margin,height-left _ margin)page _ left。媒体盒。右上=(宽度,高度-左边距)pdf _ output。添加页面(page _ left)#切割右边pdf page _ right=pdf _ input _ right。获取第(一)页右页。媒体盒。左下角=(down _ margin,right _ margin)page _ right。媒体盒。右下=(width,right _ margin)page _ right。媒体盒。左上=(down _ margin,height/2)page _ right。添加页面(page _ right)pdf _ output。write(open(outfile, WB )#保存可移植文档格式文件的扩展名(portable document format的缩写)打印(完成!)infile=应用多元统计分析缓慢的老鼠pdfoutfile=应用多元统计分析缓慢的老鼠分裂。pdf left_margin=10 right_margin=10 down_margin=20 pdf _ split(infile,outfile,left _ margin,right _ margin,down _ margin)完成!看下最后效果:
图10 调整后的便携文档格式黑边情况其他文章推荐
机器学习算法与计算机编程语言实现专栏
结构化查询语言入门教程专栏
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。