python 修改pdf_使用Python编辑PDF
这篇文章介绍使用Python处理PDF文件的编辑任务。分为几个不同的部分:加密PDF,提取PDF的文字内容,合并PDF文件,添加水印。
加密PDF文件
我们先来拷贝一份PDF文件,然后对它加密。在这里,需要使用到库PyPDF2,如果没有的话,需要提前安装: pip3 install PyPDF2,所有的读写操作都可以由它完成,对于文件加密,它提供了非常方便的接口PdfFileWriter::encrypt,接下来看看例子。
code snippet:
import PyPDF2
fileName = "/Users/weiyang/Desktop/Test.pdf"
newFileName = "/Users/weiyang/Desktop/NewTest.pdf"
file = open( fileName, 'rb' )
reader = PyPDF2.PdfFileReader( file )
writer = PyPDF2.PdfFileWriter()
for pageIndex in range( reader.numPages ):
writer.addPage( reader.getPage( pageIndex ) )
writer.encrypt( 'bell' ) #passwd
newFile = open( newFileName, "wb" )
writer.write( newFile )
newFile.close()
file.close()
result:
如果不想保留原始的文件,可以使用OS库中的rename方法,将新的文件覆盖Test.pdf即可。要使用Python解密的话,PdfFileReader的decrypt方法可以帮助到我们。
从PDF中提取文本内容
实验的材料还是上面部分的Test.pdf,第三方库PyPDF2能帮助我们提取文本,可它也仅限于提取文本内容,不能要求更多了。PDF是一种二进制文件,很难做到全部提取。从目前的技术水平来看,我们只能尽可能提取多的文本。
下面的代码展示了简单的提取流程,结果不完美,少了一行文字。
import PyPDF2
import os
fileName = "/Users/weiyang/Desktop/Test.pdf"
file = open( fileName, 'rb' )
reader = PyPDF2.PdfFileReader( file )
page = reader.getPage( 0 )
content = page.extractText()
print content
file.close()
合并两份不同的PDF文件
有时候,我们想要把不同的PDF文件合并成一份,在PyPDF2看来,这就是读写操作的组合。在下面的例子中,我将Test1.pdf和Test2.pdf合并成新的文件NewTest.pdf。
(我们还可以针对Test1.pdf和Test2.pdf组合writer.addPage,调整页面的次序,自由发挥)
import PyPDF2
fileName1 = "/Users/weiyang/Desktop/Test1.pdf"
fileName2 = "/Users/weiyang/Desktop/Test2.pdf"
newFileName = "/Users/weiyang/Desktop/NewTest.pdf"
file1 = open( fileName1, 'rb' )
file2 = open( fileName2, 'rb' )
reader1 = PyPDF2.PdfFileReader( file1 )
reader2 = PyPDF2.PdfFileReader( file2 )
writer = PyPDF2.PdfFileWriter()
for pageIndex in range( reader1.numPages ):
writer.addPage( reader1.getPage( pageIndex ) )
for pageIndex in range( reader2.numPages ):
writer.addPage( reader2.getPage( pageIndex ) )
newFile = open( newFileName, "wb" )
writer.write( newFile )
newFile.close()
file1.close()
file2.close()
当file.close之后,才能确保内容被写入磁盘哦。
给PDF加水印
我使用微软Office doc写了个艺术字,然后导出成一份PDF文件,把它作为水印文件 —— 机智如我,接着把它叠加到NewTest.pdf的每一页上。
叠加,并不像我们想象的那么复杂,PageObject::mergePage能帮助我们很容易做到这一点。参考下面的例子。
Code:
import PyPDF2
fileName = "/Users/weiyang/Desktop/NewTest.pdf"
fileName2 = "/Users/weiyang/Desktop/WaterMark.pdf"
fileName3 = "/Users/weiyang/Desktop/Result.pdf"
file = open( fileName, 'rb' )
reader = PyPDF2.PdfFileReader( file )
waterMarkReader = PyPDF2.PdfFileReader( open( fileName2, "rb" ) )
writer = PyPDF2.PdfFileWriter()
for pageIndex in range( reader.numPages ):
pageObj = reader.getPage( pageIndex )
pageObj.mergePage( waterMarkReader.getPage( 0 ) )
writer.addPage( pageObj )
resultFile = open( fileName3, "wb" )
writer.write( resultFile )
resultFile.close()
file.close()
Result:
python 修改pdf_使用Python编辑PDF相关推荐
- python 原理 pdf_利用Python处理PDF——裁剪和生成新的PDF
安装 在cmd中输入这一句: pip install -U pdfminer3k -i https://pypi.tuna.tsinghua.edu.cn/simple --user 注意:这里安装的 ...
- python设计模式pdf_精通Python设计模式 高清晰PDF+源码
精通Python设计模式讲述了16种基本设计模式,轻松解决软件设计常见问题:借力高效的Python语言,用现实例子展示各模式关键特性. 本书用实际生活中的例子带你了解常用的设计模式,介绍了诸多有关编写 ...
- 如何用python处理pdf_用Python处理PDF
本文1146字,预计阅读需8分钟: PDF作为可移植文档格式(Portable Document Format),在日常生活中经常接触到,最近处理一些数据更是频繁接触一些需要批量处理pdf文件的需求, ...
- python自动翻译pdf_在Python中自动执行PDF
python自动翻译pdf Modules used: 使用的模块: In this script, we will use PyPDF2 module which will provide us v ...
- 用python写pdf_用 Python 写了一个 PDF 转换器,以后再也不用花钱转了
class PDF2Word(): def __init__(self): self.machineid = 'ccc052ee5200088b92342303c4ea9399' self.token ...
- python压缩pdf_【转】PDF 用python 压缩
原文链接:https://blog.csdn.net/jylonger/article/details/81109629 目前只针对纯PDF图片压缩 实现原理: 主要通过PYMUPDF进行图片提取,图 ...
- python修改指定行,python读取文件的指定行并修改
文件是python最常操作的对象,先看文件,格式固定,每6行一组,且最后一行为空行,这是Python脚本从接口文档上取下来的数据,按固定格式自动生成的RF关键字脚本,由于接口有重复,直接用的话会报错( ...
- python 修改文件只读,Python脚本去除文件的只读性操作
如何在PYTHON中移去文件的只读属性, 用chmod命令stat.S_IWRITE import os import stat os.chmod( filename, stat.S_IWRITE ) ...
- python修改excel数据-python之实现对excel表格数据的修改
题目: 有一个名为produceSales.xlsx的表格文件,每一行代表一次单独的销售纪录,第一列(A)是产品名字,第二行(B)是产品价格,第三行(C)是销售的数量,第四行(D)是本次销售总收入(根 ...
- python修改服务器ip,[python+Bat]读表修改机房IP
[Shell] 纯文本查看 复制代码拷贝一下脚本到.bat文件,双击运行即可,有交互式提示输入新的计算机名 @ ECHO OFF color 0A ECHO --------------------- ...
最新文章
- Windows7/10上快速搭建Tesseract-OCR开发环境操作步骤
- 开关电源三种控制模式:PWM/PFM/PSM
- 36 多线程之线程池pool
- Webpack 入门教程
- propertychange方法
- linux系统下的动态壁纸,您可以在下面下载动态壁纸APK和linuxct的配套应用
- LeetCode 1181. 前后拼接(哈希map)
- STM32H743+CubeMX-两路FDCAN同时工作的终极方案(RTX5)
- flash 基础语法
- Codeblocks 中文乱码解决方法
- 代码管理工具之git的学习
- python英文分词统计词频_Python 分词并统计词频
- 经纬度坐标格式批量转换
- python 内存不足_python内存不足
- Java HotSpot(TM) 64-Bit Server VM warning:
- 【POJ1021】Intervals (最短路解差分约束)
- 划词翻译脚本--AutoHotkey
- AndroidSDK开发6我用kotlin协程写了一个简单sdk
- 圆周率的计算——典型Python案例
- Android版火狐无法同步,Firefox 同步 故障解决