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自然语言编码转换模块codecs介绍
Apr 08 Python
Python里disconnect UDP套接字的方法
Apr 23 Python
Python中用于计算对数的log()方法
May 15 Python
Python 正则表达式入门(初级篇)
Dec 07 Python
Python使用pickle模块实现序列化功能示例
Jul 13 Python
Python中py文件转换成exe可执行文件的方法
Jun 14 Python
python画微信表情符的实例代码
Oct 09 Python
Python3 Tkinkter + SQLite实现登录和注册界面
Nov 19 Python
Python创建一个元素都为0的列表实例
Nov 28 Python
基于PyTorch的permute和reshape/view的区别介绍
Jun 18 Python
Python基于unittest实现测试用例执行
Nov 25 Python
Python制作春联的示例代码
Jan 22 Python
python 实现图片特效处理
教你使用Python获取QQ音乐某个歌手的歌单
Python os和os.path模块详情
如何通过一篇文章了解Python中的生成器
Python pyecharts绘制条形图详解
Python OpenCV超详细讲解读取图像视频和网络摄像头
基于Python实现股票收益率分析
You might like
PHP文本数据库的搜索方法
2006/10/09 PHP
实例(Smarty+FCKeditor新闻系统)
2007/01/02 PHP
php桌面中心(四) 数据显示
2007/03/11 PHP
window+nginx+php环境配置 附配置搭配说明
2010/12/29 PHP
浅析php面向对象public private protected 访问修饰符
2013/06/30 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
PHP与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
php+mysql实现的二级联动菜单效果详解
2016/05/10 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
2016/05/30 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
[原创]后缀就扩展名为js的文件是什么文件
2007/12/06 Javascript
JS中==与===操作符的比较
2009/03/21 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
2011/10/08 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
Node.js文件操作详解
2014/08/16 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
JavaScript Date 知识浅析
2017/01/29 Javascript
vue综合组件间的通信详解
2017/11/06 Javascript
JS监听事件的叠加和移除功能
2018/11/19 Javascript
JS实现li标签的删除
2019/04/12 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
2017/09/05 Python
python实现朴素贝叶斯分类器
2018/03/28 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
Python通过getattr函数获取对象的属性值
2020/10/16 Python
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
路政管理专业个人自荐信范文
2013/11/30 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
工商行政管理专业求职书
2014/05/23 职场文书
2014年房地产工作总结范文
2014/11/19 职场文书
js中Object.create实例用法详解
2021/10/05 Javascript
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技
Redis特殊数据类型bitmap位图
2022/06/01 Redis