当前位置:
首页 > temp > python入门教程 >
-
pdf和图片的处理一记
python是非常好用的一门语言,因为它有很多别人封装好底层逻辑的库,我们只需要用简单的函数调用或者经过并不复杂的初始化过程即可。最近要投递简历,所以在处理简历的时候遇到一个问题,就是生成了一份pdf简历,但有一页是多余的,一开始是用wps进行删除的,不过只进行删除然后保存一项操作,就要充钱了!!!吃相真难看!我是程序员,我还用你的逻辑吗?呸
截图转换成pdf
初始想法,是用截图的办法,来生成一张图片,然后使用pillow来进行处理(也就调用save函数,规定一下保存参数而已)。如下:
就一张截图,然后简单处理就可以了,需要说明的是下面用到的第三方库是pillow库:
|
from PIL import Image |
|
|
|
|
|
def main(): |
|
path = "resume.png" |
|
img = Image.open(path) |
|
img.load() |
|
background = Image.new('RGB', img.size, (255, 255, 255)) |
|
background.paste(img, mask=img.split()[3]) # 3 is the alpha channel |
|
background.save('res.pdf', save_all=True) |
|
img.close() |
|
|
|
|
|
if __name__ == '__main__': |
|
main() |
其实个人处理,直接用python的交互界面就行了的,简单快捷。不过最后得到的效果不好,因为照片转过来后,默认的转换得到的pdf很模糊。
第二弹
上面失败后,就想着从之前已经下载好的pdf入手,因为有两页,所以想切换成图片对象,然后把图片对象保存为pdf。 用到的库是pymupdf和上面的pillow。
|
import fitz #pymupdf库 |
|
from PIL import Image |
|
|
|
|
|
def main(): |
|
# 保存第二页pdf为图片 |
|
doc = fitz.open('balala.pdf') |
|
trans = fitz.Matrix(1.0, 1.0).prerotate(0) #Matrix的参数是表示分辨率 |
|
pix = doc[1].get_pixmap(matrix=trans, alpha=False) |
|
dpi = (pix.xres, pix.yres) |
|
img = Image.frombytes('RGB', (pix.width, pix.height), pix.samples) |
|
img.save('res.jpg', dpi=dpi) |
|
img.close() |
|
# 转换得到的图片为pdf |
|
img_pdf = Image.open('res.jpg') |
|
img_pdf.save('res.pdf', save_all=True) |
|
img_pdf.close() |
|
|
|
|
|
if __name__ == "__main__": |
|
main() |
嗯,满心欢喜打开一看。。。。。。妈哎,这都啥?比上面的还要模糊,生成的图片和pdf都是目标内容,但清晰度不够,没法子了,不搞转换那一套了,直接处理pdf!!!
pdf处理PyPDF2
如题所示,这里要用到的是PyPDF2这么一个库,不浪费时间,直接上代码:
|
# encoding=utf-8 |
|
# 主要用到的就库里面的读取对象和写入对象 |
|
from PyPDF2 import PdfFileReader, PdfFileWriter |
|
|
|
|
|
def main(): |
|
pdf = PdfFileReader(open('test.pdf', 'rb')) |
|
pdf_res = PdfFileWriter() |
|
pdf_res.addPage(pdf.getPage(1)) #第二页,所以index是1 |
|
pdf_res.write(open('res.pdf', 'wb')) |
|
|
|
|
|
if __name__ == "__main__": |
|
main() |
嗯,这次总算是ok了。如果是交互界面进行的话,记得最后关掉cmd的python进程再查看结果pdf,不然会显示文件损坏。
出处:https://www.cnblogs.com/Jack-artical/p/16954205.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数