python自动化之PDF
###################################处理PDF和Word文档###################################
'''
PDF和Word文档是二进制文件,除了文本之外,
它们还保存了许多字体、颜色和布局信息
'''
'''
从PDF提取文本
'''
###################################从PDF提取文本###################################
import PyPDF2
pdfFileObj=open(r'C:\Users\Administrator\Desktop\test.pdf','rb')
pdfReader=PyPDF2.PdfFileReader(pdfFileObj)
pdfReader.numPages
pageObj=pdfReader.getPage(0)
pageObj.extractText()
###################################解压PDF#########################################
import PyPDF2
pdfReader=PyPDF2.PdfFileReader(open(r'C:\Users\Administrator\Desktop\test.pdf','rb'))
pdfReader.isEncrypted ####是否加密
pdfReader.getPage(0)
pdfReader.decrypt('rosebud') ####提供解密口令
pageObj=pdfReader.getPage(0)
###################################创建PDF#########################################
'''
PyPDF2不能将任意文本写入PDF:
PyPDF2写入PDF的能力,仅限于从其他PDF中拷贝页面、旋转页面、重叠页面和加密文件
'''
'''
一般方式:
1、打开一个或多个已用的PDF(源PDF),得到PdfFileReader对象
2、创建一个新的PdfFileWriter对象
3、将页面从PdfFileReader对象拷贝到PdfFileWriter对象中
4、利用PdfFileWriter对象写入输出的PDF
'''
#####################################################拷贝页面###########################################################
def merge(pdf_one, pdf_two, filename='my.pdf',output_dir=r'C:\Users\Administrator\Desktop'):
input_one = file(pdf_one, 'rb')
input_two = file(pdf_two, 'rb')
pdf_input_one = PyPDF2.PdfFileReader(input_one)
pdf_input_two = PyPDF2.PdfFileReader(input_two)
numOne = pdf_input_one.getNumPages()
numTwo = pdf_input_two.getNumPages()
print numOne, numTwo
pdf_output = PyPDF2.PdfFileWriter()
for pageNum in range(numOne):
print 'hereo'
pageObj=pdf_input_one.getPage(pageNum)
pdf_output.addPage(pageObj)
for pageNum in range(numTwo):
print 'heret'
pageObj=pdf_input_two.getPage(pageNum)
pdf_output.addPage(pageObj)
pdf_name = output_dir+filename
print pdf_name
output_stream = file( pdf_name,'wb')
pdf_output.write(output_stream)
output_stream.close()
input_one.close()
input_two.close()
print 'Done!'
merge(r'C:\Users\Administrator\Desktop\Pairs_Trading_Quantitative Methods and Analysis.pdf',r'C:\Users\Administrator\Desktop\deMontjoye.SM.pdf')
#####################################################旋转页面###########################################################
'''
利用rotateClockwise()和rotateCounterClockwise()方法
PDF文档的页面也可以旋转90度的整数倍,向这些方法传入
整数90、180或270
'''
def merge(pdf_one, pdf_two, filename='my.pdf',output_dir=r'C:\Users\Administrator\Desktop'):
input_one = file(pdf_one, 'rb')
input_two = file(pdf_two, 'rb')
pdf_input_one = PyPDF2.PdfFileReader(input_one)
pdf_input_two = PyPDF2.PdfFileReader(input_two)
numOne = pdf_input_one.getNumPages()
numTwo = pdf_input_two.getNumPages()
print numOne, numTwo
pdf_output = PyPDF2.PdfFileWriter()
for pageNum in range(numOne):
print 'hereo'
pageObj=pdf_input_one.getPage(pageNum)
pageObj=pageObj.rotateClockwise(90)
pdf_output.addPage(pageObj)
for pageNum in range(numTwo):
print 'heret'
pageObj=pdf_input_two.getPage(pageNum)
pageObj=pageObj.rotateClockwise(90)
pdf_output.addPage(pageObj)
pdf_name = output_dir+filename
print pdf_name
output_stream = file( pdf_name,'wb')
pdf_output.write(output_stream)
output_stream.close()
input_one.close()
input_two.close()
print 'Done!'
merge(r'C:\Users\Administrator\Desktop\Pairs_Trading_Quantitative Methods and Analysis.pdf',r'C:\Users\Administrator\Desktop\deMontjoye.SM.pdf')
#####################################################叠加页面###########################################################
import PyPDF2
minutesFile=open(r'C:\Users\Administrator\Desktop\Pairs_Trading_Quantitative Methods and Analysis.pdf','rb')
pdfReader=PyPDF2.PdfFileReader(minutesFile)
minutesFirstPage=pdfReader.getPage(0)
pdfWatermarkReader=PyPDF2.PdfFileReader(open(r'C:\Users\Administrator\Desktop\deMontjoye.SM.pdf','rb'))
minutesFirstPage.mergePage(pdfWatermarkReader.getPage(0))
pdfWriter=PyPDF2.PdfFileWriter()
pdfWriter.addPage(minutesFirstPage)
for pageNum in range(1,pdfReader.numPages):
pageObj=pdfReader.getPage(pageNum)
pdfWriter.addPage(pageObj)
resultPdfFile=open(r'C:\Users\Administrator\Desktop\merge.pdf','wb')
pdfWriter.write(resultPdfFile)
minutesFile.close()
resultPdfFile.close()
#####################################################加密PDF###########################################################
import PyPDF2
pdfFile=file(r'C:\Users\Administrator\Desktop\deMontjoye.SM.pdf','rb')
pdfReader=PyPDF2.PdfFileReader(pdfFile)
pdfWriter=PyPDF2.PdfFileWriter()
for pageNum in range(pdfReader.numPages):
pdfWriter.addPage(pdfReader.getPage(pageNum))
pdfWriter.encrypt('swordfish')
resultPdf=file(r'C:\Users\Administrator\Desktop\t.pdf','wb')
pdfWriter.write(resultPdf)
resultPdf.close()
python自动化之PDF的更多相关文章
- Python自动化运维:技术与最佳实践 PDF高清完整版|网盘下载内附地址提取码|
内容简介: <Python自动化运维:技术与最佳实践>一书在中国运维领域将有“划时代”的重要意义:一方面,这是国内第一本从纵.深和实践角度探讨Python在运维领域应用的著作:一方面本书的 ...
- Python自动化运维 技术与最佳实践PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书
点击获取提取码:7bl4 一.内容简介 <python自动化运维:技术与最佳实践>一书在中国运维领域将有"划时代"的重要意义:一方面,这是国内第一本从纵.深和实践角度探 ...
- Selenium2+python自动化43-判断title(title_is)
From: https://www.cnblogs.com/yoyoketang/p/6539117.html 前言 获取页面title的方法可以直接用driver.title获取到,然后也可以把获取 ...
- Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)
前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLT ...
- Selenium2+python自动化61-Chrome您使用的是不受支持的命令行标记:--ignore-certificate-errors
前言 您使用的是不受支持的命令行标记:--ignore-certificate-errors.稳定性和安全性会有所下降 selenium2启动Chrome浏览器是需要安装驱动包的,但是不同的Chrom ...
- Selenium2+python自动化59-数据驱动(ddt)
前言 在设计用例的时候,有些用例只是参数数据的输入不一样,比如登录这个功能,操作过程但是一样的.如果用例重复去写操作过程会增加代码量,对应这种多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一 ...
- Selenium2+python自动化55-unittest之装饰器(@classmethod)
前言 前面讲到unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,比如打开浏览器操作,每次执行用例时候都会重新打开,这样就会浪费很多时间. 于是就想是不是可以 ...
- Selenium2+python自动化52-unittest执行顺序
前言 很多初学者在使用unittest框架时候,不清楚用例的执行顺序到底是怎样的.对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行. 本篇通过最简单案例详细讲解unittest执行顺 ...
- selenium3+python自动化50-环境搭建(firefox)
前言 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的. 安装环境过程中主要会遇到三个坑: 1.'geckodri ...
随机推荐
- Python2.7-csv
csv模块,用于读写 csv 文件,常用 reader 和 writer 对象进行操作 1.模块的类 1.1 Dialect 对象,设置 csv 文件的各种格式,包括分隔符,引用符,转义符等 1.1. ...
- NRF51822/NRF51802/NRF52810/NRF52811的详解区别
nRF51系列 - 多协议低功耗蓝牙和ANT/ANT+ 和2.4GHz专用系统级芯片 NRF51822-QFAA和NRF51802-QFAA在FLASH RAM的容量没有差别:区别在于:1.接收灵敏度 ...
- odoo 打印单
<td style="word-wrap:break-word;width:20%;font-size:16"> <t t-foreach="l.pro ...
- 64位RHEL5系统上运行yum出现"This system is not registered with RHN”的解决方法
在红帽EL5上运行yum,提示“This system is not registered with RHN”,意思是没有在官网上注册,不能下载RH的软件包,替代方案是采用centos源. 1.卸载r ...
- 2017-2018-2 20155203《网络对抗技术》 Exp8:Web基础
基础问题回答 (1)什么是表单 我认为,form概念主要区分于table,table是用网页布局设计,是静态的,form是用于显示和收集信息传递到服务器和后台数据库中,是动态的: 以下是表单的百度百科 ...
- WPF编程,使用WindowChrome实现自定义窗口功能的一种方法。
原文:WPF编程,使用WindowChrome实现自定义窗口功能的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/arti ...
- python 回溯法 记录
一直不是太理解回溯法,这几天集中学习了一下,记录如下. 回溯法有"通用的解题法"之称. 1.定义: 也叫试探法,它是一种系统地搜索问题的解的方法. 2.基本思想: 从一条路往前 ...
- 微信小程序之分享或转发功能(自定义button样式)
小程序页面内发起转发 通过给 button 组件设置属性open-type="share",可以在用户点击按钮后触发 Page.onShareAppMessage 事件,如果当前页 ...
- 巧用Alt 键
1,查看表的元数据信息 在TSQL 查询编辑器中,选中一个表,如图 点击Alt+F1,就可以查看表的元数据,列的定义和ID列等 2,使用Alt批量插入逗号 在TQL语句中,有时为了使用 in 子句,必 ...
- 阿里云ECS 固定带宽变为按量付费的方式
阿里云ECS 固定带宽变为按量付费的方式 阿里云控制台 2.升降配置-降低配置-降低至最低配置 3.为按量带宽设置一个峰值,例如100M. 4.过几分钟,就自动变为按量付费的带宽了.