Python实现文字pdf转换图片pdf效果
作者:KjPrime 时间:2021-03-10 23:20:03
前言
为什么会做这个?
因为我们把word转化为pdf,wps默认转化为文字pdf,而图片pdf要会员。
网上确实也有网站可以实现免费的,但是未必安全。
思路
我看了网上的很多代码,都是先把文字pdf先转化为图片,然后再组装成pdf文档。我的思路也是这样的。
但是我和他们很大的不一样就是,我不需要先把图片保存起来再提取,而我只需要把图片的信息先存起来,再输出pdf。
代码展示
先安装依赖
pip install PyMuPDF
输入文件列表
import os
import fitz
def single_wordpdf_to_imgpdf(pdf_path: str):
pdf = fitz.open(pdf_path) # 打开pdf目录
pdf_img = fitz.open() # 打开空文件,用来存图片pdf
for page_inf in pdf:
definition = 3 # 清晰度,感觉输出的pdf不够清晰,可以调大,调大,文件大小也会变大
matrix = fitz.Matrix(definition, definition)
img = page_inf.get_pixmap(matrix=matrix).tobytes()
img = fitz.open("png", img)
pdf_bytes = img.convert_to_pdf()
pdf_img.insert_pdf(fitz.open("pdf", pdf_bytes))
pdf_img.save("图片pdf_" + os.path.basename(pdf_path))
def group_wordpdf_to_imgpdf(path_array: list[str]):
for pdf_path in path_array:
print(pdf_path, "转换中...")
single_wordpdf_to_imgpdf(pdf_path)
print("完成")
if __name__ == '__main__':
path = ["xxx.pdf"]
group_wordpdf_to_imgpdf(path)
输入文件夹
import os
import fitz
import time
def single_wordpdf_to_imgpdf(pdf_path: str):
pdf = fitz.open(pdf_path) # 打开pdf目录
pdf_img = fitz.open() # 打开空文件,用来存图片pdf
for page_inf in pdf:
definition = 3 # 清晰度,感觉输出的pdf不够清晰,可以调大,调大,文件大小也会变大
matrix = fitz.Matrix(definition, definition)
img = page_inf.get_pixmap(matrix=matrix).tobytes()
img = fitz.open("png", img)
pdf_bytes = img.convert_to_pdf()
pdf_img.insert_pdf(fitz.open("pdf", pdf_bytes))
if not os.path.exists("output"):
os.makedirs("output") # 处理好的pdf存入了output目录下 #
pdf_img.save("output/图片pdf_" + os.path.basename(pdf_path))
def group_wordpdf_to_imgpdf(path_array: list[str]):
for pdf_path in path_array:
print(pdf_path, "转换中...")
single_wordpdf_to_imgpdf(pdf_path)
print("完成")
def folder_pdf_files(folder: str) -> list[str]: # 一个文件夹里面有多少pdf文件
file_list = []
for a, b, c in os.walk(folder):
if b == []:
for filename in c:
if filename[-3:].lower() == 'pdf':
file_path = os.path.join(a, filename)
file_list.append(file_path)
print(folder, ": 有", len(file_list), "个pdf文件")
return file_list
if __name__ == '__main__':
time_start = time.time()
path_list = folder_pdf_files("目录")
group_wordpdf_to_imgpdf(path_list)
time_end = time.time()
print("程序运行时间:", round(time_end - time_start, 2), "秒")
来源:https://blog.csdn.net/qq_45019494/article/details/123741012
标签:Python,文字,图片,pdf
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python利用Scrapy框架爬取豆瓣电影示例
2022-04-30 15:16:17
![](https://img.aspxhome.com/file/2023/3/86253_0s.png)
Python使用Beautiful Soup实现解析网页
2022-11-21 19:17:22
python创建学生成绩管理系统
2023-08-09 04:19:38
![](https://img.aspxhome.com/file/2023/9/62299_0s.jpg)
Python列表的深复制和浅复制示例详解
2023-01-29 01:26:47
![](https://img.aspxhome.com/file/2023/9/68459_0s.png)
Python将xml和xsl转换为html的方法
2022-04-02 14:24:32
pandas数据类型之Series的具体使用
2022-03-30 18:54:46
使用Python做定时任务及时了解互联网动态
2021-07-08 17:54:16
![](https://img.aspxhome.com/file/2023/6/104966_0s.png)
8行代码实现Python文件去重
2023-11-20 14:47:35
![](https://img.aspxhome.com/file/2023/4/64334_0s.jpg)
Python安装Bs4及使用方法
2023-01-09 19:36:45
![](https://img.aspxhome.com/file/2023/0/103620_0s.png)
学点简单的Django之第一个Django程序的实现
2021-03-23 05:10:59
![](https://img.aspxhome.com/file/2023/9/92449_0s.png)
js和jquery判断数据类型的4种方法总结
2023-08-25 08:49:18
Python文件打开读取写入方法实用案例
2023-08-23 21:19:51
![](https://img.aspxhome.com/file/2023/2/61982_0s.png)
Python flask框架端口失效解决方案
2021-02-19 23:48:46
![](https://img.aspxhome.com/file/2023/5/89275_0s.png)
Frontpage中网页字体的美化研究
2008-03-10 12:13:00
jsp中文显示问号问题解决方法
2023-07-22 10:33:50
一文带你搞懂JS中导入模块import和require的区别
2023-07-21 03:24:18
Python合并字典键值并去除重复元素的实例
2022-02-10 17:48:40
Django全局启用登陆验证login_required的方法
2021-05-29 12:49:31
![](https://img.aspxhome.com/file/2023/1/102341_0s.png)
如何为Access数据库表添加日期或时间戳
2008-11-21 12:46:00
Python 中urls.py:URL dispatcher(路由配置文件)详解
2021-01-19 02:47:15
![](https://img.aspxhome.com/file/2023/3/101193_0s.png)