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 EOL while scanning string literal问题解决方法
Sep 18 Python
Python用Pillow(PIL)进行简单的图像操作方法
Jul 07 Python
python range()函数取反序遍历sequence的方法
Jun 25 Python
Tensorflow加载预训练模型和保存模型的实例
Jul 27 Python
python 统计文件中的字符串数目示例
Dec 24 Python
tf.concat中axis的含义与使用详解
Feb 07 Python
Python3 读取Word文件方式
Feb 13 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
Mar 02 Python
python 读取二进制 显示图片案例
Apr 24 Python
Python调用OpenCV实现图像平滑代码实例
Jun 19 Python
python打开文件的方式有哪些
Jun 29 Python
一文读懂python Scrapy爬虫框架
Feb 24 Python
python 实现图片特效处理
教你使用Python获取QQ音乐某个歌手的歌单
Python os和os.path模块详情
如何通过一篇文章了解Python中的生成器
Python pyecharts绘制条形图详解
Python OpenCV超详细讲解读取图像视频和网络摄像头
基于Python实现股票收益率分析
You might like
PHP STRING 陷阱原理说明
2010/07/24 PHP
Dwz与thinkphp整合下的数据导出到Excel实例
2014/12/04 PHP
不安全的常用的js写法
2009/09/15 Javascript
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
jQuery创建插件的代码分析
2011/04/14 Javascript
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
2016/07/18 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
[01:01:18]VP vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python对日志进行处理的实例代码
2018/10/06 Python
使用python PIL库实现简单验证码的去噪方法步骤
2019/05/10 Python
Python数据处理篇之Sympy系列(五)---解方程
2019/10/12 Python
Python 导入文件过程图解
2019/10/15 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
2020/03/23 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
利用html5 canvas动态画饼状图的示例代码
2018/04/02 HTML / CSS
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
留学推荐信怎么写
2014/01/25 职场文书
小学生检讨书大全
2014/02/06 职场文书
竞选学习委员演讲稿
2014/04/28 职场文书
个人委托书
2014/07/31 职场文书
搞笑老公保证书
2015/02/26 职场文书
公司文体活动总结
2015/05/07 职场文书
撤诉书怎么写
2015/05/19 职场文书
2016年国庆节新闻稿范文
2015/11/25 职场文书
离婚协议书格式范本
2016/03/18 职场文书
2019年员工晋升管理制度范本!
2019/07/08 职场文书
详解Python小数据池和代码块缓存机制
2021/04/07 Python
详解Node.js如何处理ES6模块
2021/05/15 Javascript
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android