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列表list数组array用法实例解析
Oct 28 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
python在不同层级目录import模块的方法
Jan 31 Python
python实现读取并显示图片的两种方法
Jan 13 Python
Python 比较两个数组的元素的异同方法
Aug 17 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
Oct 25 Python
python多进程实现进程间通信实例
Nov 24 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
Aug 13 Python
Python3离线安装Requests模块问题
Oct 13 Python
Python如何通过Flask-Mail发送电子邮件
Jan 29 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
Feb 12 Python
Python+OpenCV图像处理——实现直线检测
Oct 23 Python
python 实现图片特效处理
教你使用Python获取QQ音乐某个歌手的歌单
Python os和os.path模块详情
如何通过一篇文章了解Python中的生成器
Python pyecharts绘制条形图详解
Python OpenCV超详细讲解读取图像视频和网络摄像头
基于Python实现股票收益率分析
You might like
Thinkphp中的curd应用实用要点
2015/01/04 PHP
JavaScript 判断判断某个对象是Object还是一个Array
2010/01/28 Javascript
Javascript和Java获取各种form表单信息的简单实例
2014/02/14 Javascript
JQuery 控制内容长度超出规定长度显示省略号
2014/05/23 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
详解vue2父组件传递props异步数据到子组件的问题
2017/06/29 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
简单介绍react redux的中间件的使用
2018/04/06 Javascript
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
Python3中的json模块使用详解
2018/05/05 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
2019/06/14 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
HTTP状态码详解
2021/03/18 杂记
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
Columbia美国官网:美国著名的户外服装品牌
2016/11/24 全球购物
JMS中Topic和Queue有什么区别
2013/05/15 面试题
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
2015/08/17 面试题
夜大自我鉴定
2013/10/31 职场文书
教育英语专业毕业生的求职信
2014/03/13 职场文书
学雷锋活动总结范文
2014/04/25 职场文书
户外宣传策划方案
2014/05/25 职场文书
爱护公共设施标语
2014/06/24 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
2014年社区工会工作总结
2014/12/18 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python