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


猜你喜欢
Python数据可视化实现多种图例代码详解
2022-02-11 04:01:38

mysql数据库是做什么
2024-01-16 04:18:16
centos7通过yum安装mysql的方法
2024-01-18 06:48:57
django框架中ajax的使用及避开CSRF 验证的方式详解
2023-05-11 02:10:41

OpenCV实现对象跟踪的方法
2022-02-06 04:23:42

tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2023-04-25 04:15:56
Python游戏推箱子的实现
2023-09-23 05:31:27

python命令行工具Click快速掌握
2021-08-13 08:03:58
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2024-04-22 12:59:41

Python中正则表达式的用法实例汇总
2021-10-02 07:48:08
Python中按值来获取指定的键
2023-05-01 13:21:07
通过python顺序修改文件名字的方法
2023-05-20 08:05:29

Python3 元组tuple入门基础
2023-01-16 12:13:22
Python GUI布局尺寸适配方法
2022-03-07 05:52:26
.Net Core下使用Dapper的方法
2023-07-16 17:19:17
pandas分组聚合详解
2023-06-28 15:50:25
如何在django中实现分页功能
2021-10-21 03:29:49

FrontPage2002简明教程六:图片库
2008-09-17 11:30:00
python fuzzywuzzy模块模糊字符串匹配详细用法
2021-10-02 10:58:03
20非常有用的Python单行代码分享
2021-07-21 07:16:57