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 相关文章推荐
python中pygame模块用法实例
Oct 09 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
Dec 14 Python
利用pyuic5将ui文件转换为py文件的方法
Jun 19 Python
python3 selenium自动化 frame表单嵌套的切换方法
Aug 23 Python
Python内置加密模块用法解析
Nov 25 Python
Python字节单位转换实例
Dec 05 Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 Python
flask框架蓝图和子域名配置详解
Jan 25 Python
python 项目目录结构设置
Feb 14 Python
python实现logistic分类算法代码
Feb 28 Python
Python使用xlrd实现读取合并单元格
Jul 09 Python
MATLAB 全景图切割及盒图显示的实现步骤
May 14 Python
python 实现图片特效处理
教你使用Python获取QQ音乐某个歌手的歌单
Python os和os.path模块详情
如何通过一篇文章了解Python中的生成器
Python pyecharts绘制条形图详解
Python OpenCV超详细讲解读取图像视频和网络摄像头
基于Python实现股票收益率分析
You might like
PHP中文件缓存转内存缓存的方法
2011/12/06 PHP
php的sso单点登录实现方法
2015/01/08 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
2013/01/02 Javascript
jquery 选取方法都有哪些
2014/05/18 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
node.js微信公众平台开发教程
2016/03/04 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
vue2.0s中eventBus实现兄弟组件通信的示例代码
2017/10/25 Javascript
vue的状态管理模式vuex
2017/11/30 Javascript
如何更好的编写js async函数
2018/05/13 Javascript
JavaScript实现随机点名程序
2020/03/25 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
python中List的sort方法指南
2014/09/01 Python
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
python Tcp协议发送和接收信息的例子
2019/07/22 Python
Python字典取键、值对的方法步骤
2020/09/30 Python
卡骆驰新加坡官网:Crocs新加坡
2018/06/12 全球购物
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
个人简历中的自我评价范例
2013/10/29 职场文书
中餐厅经理岗位职责
2014/04/11 职场文书
老龄工作先进事迹
2014/08/15 职场文书
运动会加油稿100字
2014/09/19 职场文书
2014年班长个人工作总结
2014/11/14 职场文书
小学四年级学生评语
2014/12/26 职场文书
民间借贷借条范本
2015/05/25 职场文书
电力培训学习心得体会
2016/01/11 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
yolov5返回坐标的方法实例
2022/03/17 Python