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 相关文章推荐
把MySQL表结构映射为Python中的对象的教程
Apr 07 Python
python tensorflow基于cnn实现手写数字识别
Jan 01 Python
python搭建服务器实现两个Android客户端间收发消息
Apr 12 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
Jul 26 Python
django 中QuerySet特性功能详解
Jul 25 Python
python中pygame安装过程(超级详细)
Aug 04 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
Aug 29 Python
基于Python中isfile函数和isdir函数使用详解
Nov 29 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
Mar 06 Python
python针对Oracle常见查询操作实例分析
Apr 30 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
Jun 22 Python
python编程的核心知识点总结
Feb 08 Python
python 实现图片特效处理
教你使用Python获取QQ音乐某个歌手的歌单
Python os和os.path模块详情
如何通过一篇文章了解Python中的生成器
Python pyecharts绘制条形图详解
Python OpenCV超详细讲解读取图像视频和网络摄像头
基于Python实现股票收益率分析
You might like
德生PL660的电路分析和打磨
2021/03/02 无线电
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
2015/11/16 PHP
PHP XML和数组互相转换详解
2016/10/26 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
javascript 拖放效果实现代码
2010/01/22 Javascript
Javascript this 的一些学习总结
2012/08/02 Javascript
JavaScript DOM节点添加示例
2014/07/16 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
一个极为简单的requirejs实现方法
2016/10/20 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
jquery ajaxfileupload异步上传插件使用详解
2017/02/08 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
bootstrap datepicker插件默认英文修改为中文
2017/07/28 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
解决layui调用自定义方法提示未定义的问题
2019/09/14 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
[57:47]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python单链表的简单实现方法
2014/09/23 Python
python 队列详解及实例代码
2016/10/18 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
大学校运会广播稿
2014/02/03 职场文书
乡镇党员群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
管理失职检讨书
2015/05/05 职场文书
2015新员工工作总结范文
2015/10/15 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
XX部保密工作制度范本
2019/08/27 职场文书
python如何获取网络数据
2021/04/11 Python
Java spring单点登录系统
2021/09/04 Java/Android
简单聊聊Golang中defer预计算参数
2022/03/25 Golang
台积电称即便经济低迷也没有降价的计划
2022/04/21 数码科技