前言

大家好,我是辣条

之前辣条有发布过我们常用的两个技能点,今天第三个技能点(PDF)他来了

《Python实例篇:自动操作Excel文件(既简单又特别实用)》

《Python技巧篇:如何巧妙运用Python处理Word文档》

PDF是Portable Document Format的缩写,这类文件通常使用`.pdf`作为其扩展名。在日常开发工作中,最容易遇到的就是从PDF中读取文本内容以及用已有的内容生成PDF文档这两个任务。

目录

  • 前言
    • 工具
    • 从PDF中提取文本
    • 旋转和叠加页面
    • 加密PDF文件
    • 创建PDF文件
    • 总结

工具

python3.7

Pycharm

PDF

PyPDF2

reportlab

从PDF中提取文本

PyPDF2没有办法从PDF文档中提取图像、图表或其他媒体,但它可以提取文本,并将其返回为Python字符串。

import PyPDF2reader = PyPDF2.PdfFileReader('test.pdf')
page = reader.getPage(0)
print(page.extractText())

旋转和叠加页面

​ 上面的代码中通过创建PdfFileReader对象的方式来读取PDF文档,该对象的getPage方法可以获得PDF文档的指定页并得到一个PageObject对象,通过PageObject对象的rotateClockwiserotateCounterClockwise方法可以实现页面的顺时针和逆时针方向旋转,通过PageObject对象的addBlankPage方法可以添加一个新的空白页,代码如下所示。

import PyPDF2from PyPDF2.pdf import PageObject# 创建一个读PDF文件的Reader对象
reader = PyPDF2.PdfFileReader('resources/xxx.pdf')
# 创建一个写PDF文件的Writer对象
writer = PyPDF2.PdfFileWriter()
# 对PDF文件所有页进行循环遍历
for page_num in range(reader.numPages):# 获取指定页码的Page对象current_page = reader.getPage(page_num)  # type: PageObjectif page_num % 2 == 0:# 奇数页顺时针旋转90度current_page.rotateClockwise(90)else:# 偶数页反时针旋转90度current_page.rotateCounterClockwise(90)writer.addPage(current_page)
# 最后添加一个空白页并旋转90度
page = writer.addBlankPage()  # type: PageObject
page.rotateClockwise(90)
# 通过Writer对象的write方法将PDF写入文件
with open('resources/xxx.pdf', 'wb') as file:writer.write(file)

加密PDF文件

​ 使用PyPDF2中的PdfFileWrite对象可以为PDF文档加密,如果需要给一系列的PDF文档设置统一的访问口令,使用Python程序来处理就会非常的方便。

import PyPDF2reader = PyPDF2.PdfFileReader('resources/XGBoost.pdf')
writer = PyPDF2.PdfFileWriter()
for page_num in range(reader.numPages):writer.addPage(reader.getPage(page_num))
# 通过encrypt方法加密PDF文件,方法的参数就是设置的密码
writer.encrypt('foobared')
with open('resources/XGBoost-encrypted.pdf', 'wb') as file:writer.write(file)

创建PDF文件

​ 创建PDF文档需要三方库reportlab的支持,使用 pip install reportlab 命令安装

from reportlab.lib.pagesizes import A4
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfgen import canvaspdf_canvas = canvas.Canvas('resources/python创建.pdf', pagesize=A4)
width, height = A4# 绘图
image = canvas.ImageReader('resources/xxx.jpg')
pdf_canvas.drawImage(image, 20, height - 395, 250, 375)# 显示当前页
pdf_canvas.showPage()# 注册字体文件
pdfmetrics.registerFont(TTFont('Font1', 'resources/fonts/Vera.ttf'))
pdfmetrics.registerFont(TTFont('Font2', 'resources/fonts/青呱石头体.ttf'))# 写字
pdf_canvas.setFont('Font2', 40)
pdf_canvas.setFillColorRGB(0.9, 0.5, 0.3, 1)
pdf_canvas.drawString(width // 2 - 120, height // 2, '你好,世界!')
pdf_canvas.setFont('Font1', 40)
pdf_canvas.setFillColorRGB(0, 1, 0, 0.5)
pdf_canvas.rotate(18)
pdf_canvas.drawString(250, 250, 'hello, world!')# 保存
pdf_canvas.save()

总结

​ 以上就是python对PDF文档的操作了,实际操作还需要大家多多练习。

Python实例篇:这样操作PDF文件一点都不枯燥了相关推荐

  1. python处理pdf实例_Python实现读取PDF文件案例

    最近有一个本地客户需求是读取PDF文件,然后做自动化处理.这其实是一种典型的RPA自动化需求,简单而言就是模拟人工来操作文件,网页,客户端系统等,只要操作规则定义清楚,就可以实施这种RPA应用,而如果 ...

  2. 第19天---python办公自动化---操作PDF文件

    第19天-python办公自动化-操作PDF文件 在Python中,可以使用名为PyPDF2的三方库来读取PDF文件,可以使用下面的命令来安装它. pip install PyPDF2 读取PDF并抽 ...

  3. python 操作PDF文件 之 A3页面转A4

    python 操作PDF文件 A3页面转A4页面 文章目录 1. 需求概述 2. 代码实现 1. 需求概述 最近接到一份PDF资料需要打印,奈何页面是如图所示的A3格式的,奈何目前条件只支持打印A4. ...

  4. Python使操作PDF文件变得有趣

    大家好 我是毕加锁 (锁!) 大家在平时操作PDF文件时是不是感觉很枯燥 那么今天就教大家利用Python让操作PDF文件变得有趣起来  目录  工具  从PDF中提取文本  旋转和叠加页面  加密P ...

  5. #CSDN21天学习挑战赛#Python入门之pdfplumber模块-自动化操作PDF文件详细教程教(1)

    ​开卷有益!作者Amily1123是初学python的科研"狗",每天大量的工作是跟pdf.word.excel等文件打交道.最希望的事情就是提高工作效率,能够用最少得精力产出最多 ...

  6. day10 Python操作pdf文件

    目录 一.PyPDF2的使用 1. pypdf2的使用 2. pypdf2的基本应用 3. 为PDF文件页面添加水印 二.reportlab的使用 0. 导入工具 1. 创建画布 2. 添加文字 3. ...

  7. 使用Python合并任意多个PDF文件

    封面图片:<Python可以这样学>,ISBN:9787302456469,董付国,清华大学出版社 图书详情(京东): 用书老师可以联系董老师获取配套PPT.源码. =========== ...

  8. itex将html转成pdf加水印,itext操作PDF文件添加水印

    功能描述:添加图片和文字水印 /** * * [功能描述:添加图片和文字水印] [功能详细描述:功能详细描述] * @param srcFile 待加水印文件 * @param destFile 加水 ...

  9. 使用ITEXT操作PDF文件

    2019独角兽企业重金招聘Python工程师标准>>> 使用ITEXT操作PDF文件 pom.xml <dependency><groupId>com.ite ...

最新文章

  1. JDBC连接数据库过程
  2. JS数组去重之利用set数据结构去重
  3. 平衡不完全区组设计 数据分析的SAS实践
  4. FZOJ 2014年11月份月赛 ytaaa(dp + RMQ)
  5. NEFU 560 半数集
  6. 第3課 ここはデパートです
  7. [程序猿感悟] [悟] 两篇不错的文章 (转载自 stay4it )
  8. Netty工作笔记0045---异步模型原理剖析
  9. 对sppnet网络的理解
  10. gx works2产品id_gx works2中文版下载|
  11. 移动APP开发环境搭建(新手)
  12. Computer:C盘简介成功解决当Win10系统进行深度学习的时候发现系统C盘满了,教你如何正确卸载一些非必要的内容(提高磁盘内存和网速)
  13. 今晚8:00 | 杜克大学计算进化智能中心(CEI Lab)—— 联邦学习专题!
  14. 图示代码,轻松解决IV值计算问题(python)
  15. 删除桌面无法删除的网页快捷方式
  16. ASP.NET+Sql Server 2008 +highchart控件从数据库中获取数据生成饼状图柱状图
  17. 易企秀如何生成图片_易企秀如何制作圆形照片
  18. 基于Lumerical FDTD的等离子体光子晶体分析
  19. MybatisPlus实现多条件拼接动态查询
  20. ValueError: Invalid format specifier

热门文章

  1. str.c_str()
  2. dede 留言簿 多个
  3. 滨州智能dcs系统推荐_滨州NIPCI-7811R【四点零自动化】DCS系统
  4. Price action价格行为交易法
  5. 什么是RC低通滤波电路
  6. 至多删三个字符 (35分)
  7. Windows下Android源码下载
  8. 异常之IllegalAccessException
  9. 自体验谷歌浏览器插件推荐
  10. C++ 中scanf的返回值