这篇文章介绍使用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相关推荐

  1. python 原理 pdf_利用Python处理PDF——裁剪和生成新的PDF

    安装 在cmd中输入这一句: pip install -U pdfminer3k -i https://pypi.tuna.tsinghua.edu.cn/simple --user 注意:这里安装的 ...

  2. python设计模式pdf_精通Python设计模式 高清晰PDF+源码

    精通Python设计模式讲述了16种基本设计模式,轻松解决软件设计常见问题:借力高效的Python语言,用现实例子展示各模式关键特性. 本书用实际生活中的例子带你了解常用的设计模式,介绍了诸多有关编写 ...

  3. 如何用python处理pdf_用Python处理PDF

    本文1146字,预计阅读需8分钟: PDF作为可移植文档格式(Portable Document Format),在日常生活中经常接触到,最近处理一些数据更是频繁接触一些需要批量处理pdf文件的需求, ...

  4. python自动翻译pdf_在Python中自动执行PDF

    python自动翻译pdf Modules used: 使用的模块: In this script, we will use PyPDF2 module which will provide us v ...

  5. 用python写pdf_用 Python 写了一个 PDF 转换器,以后再也不用花钱转了

    class PDF2Word(): def __init__(self): self.machineid = 'ccc052ee5200088b92342303c4ea9399' self.token ...

  6. python压缩pdf_【转】PDF 用python 压缩

    原文链接:https://blog.csdn.net/jylonger/article/details/81109629 目前只针对纯PDF图片压缩 实现原理: 主要通过PYMUPDF进行图片提取,图 ...

  7. python修改指定行,python读取文件的指定行并修改

    文件是python最常操作的对象,先看文件,格式固定,每6行一组,且最后一行为空行,这是Python脚本从接口文档上取下来的数据,按固定格式自动生成的RF关键字脚本,由于接口有重复,直接用的话会报错( ...

  8. python 修改文件只读,Python脚本去除文件的只读性操作

    如何在PYTHON中移去文件的只读属性, 用chmod命令stat.S_IWRITE import os import stat os.chmod( filename, stat.S_IWRITE ) ...

  9. python修改excel数据-python之实现对excel表格数据的修改

    题目: 有一个名为produceSales.xlsx的表格文件,每一行代表一次单独的销售纪录,第一列(A)是产品名字,第二行(B)是产品价格,第三行(C)是销售的数量,第四行(D)是本次销售总收入(根 ...

  10. python修改服务器ip,[python+Bat]读表修改机房IP

    [Shell] 纯文本查看 复制代码拷贝一下脚本到.bat文件,双击运行即可,有交互式提示输入新的计算机名 @ ECHO OFF color 0A ECHO --------------------- ...

最新文章

  1. Windows7/10上快速搭建Tesseract-OCR开发环境操作步骤
  2. 开关电源三种控制模式:PWM/PFM/PSM
  3. 36 多线程之线程池pool
  4. Webpack 入门教程
  5. propertychange方法
  6. linux系统下的动态壁纸,您可以在下面下载动态壁纸APK和linuxct的配套应用
  7. LeetCode 1181. 前后拼接(哈希map)
  8. STM32H743+CubeMX-两路FDCAN同时工作的终极方案(RTX5)
  9. flash 基础语法
  10. Codeblocks 中文乱码解决方法
  11. 代码管理工具之git的学习
  12. python英文分词统计词频_Python 分词并统计词频
  13. 经纬度坐标格式批量转换
  14. python 内存不足_python内存不足
  15. Java HotSpot(TM) 64-Bit Server VM warning:
  16. 【POJ1021】Intervals (最短路解差分约束)
  17. 划词翻译脚本--AutoHotkey
  18. AndroidSDK开发6我用kotlin协程写了一个简单sdk
  19. 圆周率的计算——典型Python案例
  20. Android版火狐无法同步,Firefox 同步 故障解决

热门文章

  1. 机器学习处理信号分离_【火炉炼AI】机器学习054-用ICA做盲源分离
  2. Project软件安装包下载project安装教程
  3. 2019年中国公有云厂商发展状况白皮书
  4. android按钮延迟显示出来,android Toast显示延迟的优化方案
  5. 工业软件下载大全202108
  6. mp3分割方法,如何将mp3分割
  7. 新发现几个百度网盘/阿里云盘搜索资源站,还能查询网盘提取码
  8. 密码学·编码类密码·CTF常见考察密码
  9. 1102: 【入门】字符图形1-星号矩形
  10. 东方博宜 #1008字符图形9-数字正三角