Python实现文字pdf转换图片pdf效果


Posted in Python onApril 03, 2022

前言

为什么会做这个?

因为我们把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), "秒")

到此这篇关于Python实现文字pdf转换图片pdf效果的文章就介绍到这了,更多相关Python 文字pdf转图片pdf内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
ptyhon实现sitemap生成示例
Mar 30 Python
深入理解Python 代码优化详解
Oct 27 Python
Python类的用法实例浅析
May 27 Python
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 Python
Django的session中对于用户验证的支持
Jul 23 Python
Python装饰器实现几类验证功能做法实例
May 18 Python
pandas object格式转float64格式的方法
Apr 10 Python
python数据归一化及三种方法详解
Aug 06 Python
python Qt5实现窗体跟踪鼠标移动
Dec 13 Python
python保留小数位的三种实现方法
Jan 07 Python
python名片管理系统开发
Jun 18 Python
详解Pycharm安装及Django安装配置指南
Sep 15 Python
python 实现图片特效处理
教你使用Python获取QQ音乐某个歌手的歌单
Python os和os.path模块详情
如何通过一篇文章了解Python中的生成器
Python pyecharts绘制条形图详解
Python OpenCV超详细讲解读取图像视频和网络摄像头
基于Python实现股票收益率分析
You might like
实例解析php的数据类型
2018/10/24 PHP
用javascript实现给图片加链接
2007/08/15 Javascript
基于JQuery的Select选择框的华丽变身
2011/08/23 Javascript
用nodejs访问ActiveX对象,以操作Access数据库为例。
2011/12/15 NodeJs
JS动态添加与删除select中的Option对象(示例代码)
2013/12/25 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
2014/04/06 Javascript
javascript和jquery实现设置和移除文本框默认值效果代码
2015/01/13 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
Angularjs中使用layDate日期控件示例
2017/01/11 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
NodeJS基础API搭建服务器详细过程记录
2017/04/01 NodeJs
vue+springboot前后端分离实现单点登录跨域问题解决方法
2018/01/30 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
[01:31:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第二场 1月10日
2021/03/11 DOTA
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
实例讲解Python 迭代器与生成器
2020/07/08 Python
Python基于字典实现switch case函数调用
2020/07/22 Python
详解Python中string模块除去Str还剩下什么
2020/11/30 Python
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
西班牙太阳镜品牌:Hawkers
2018/03/11 全球购物
SNIDEL官网:日本VIVI杂志人气少女第一品牌
2020/03/12 全球购物
什么是URL
2015/12/13 面试题
大学生冰淇淋店商业计划书
2014/01/14 职场文书
大课间活动实施方案
2014/03/06 职场文书
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
幼儿园小班见习报告
2014/10/31 职场文书
兵马俑导游词
2015/02/02 职场文书
爱心捐书倡议书
2015/04/27 职场文书
人代会简报
2015/07/21 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技