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正则表达式匹配ip地址实例
Oct 09 Python
python二维列表一维列表的互相转换实例
Jul 02 Python
pandas DataFrame 交集并集补集的实现
Jun 24 Python
Python 之 Json序列化嵌套类方式
Feb 27 Python
python生成并处理uuid的实现方式
Mar 03 Python
使用Python防止SQL注入攻击的实现示例
May 21 Python
Django模型验证器介绍与源码分析
Sep 08 Python
python 两种方法删除空文件夹
Sep 29 Python
python使用selenium爬虫知乎的方法示例
Oct 28 Python
Python3中的tuple函数知识点讲解
Jan 03 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 Python
Python Matplotlib绘制等高线图与渐变色扇形图
Apr 14 Python
python 实现图片特效处理
教你使用Python获取QQ音乐某个歌手的歌单
Python os和os.path模块详情
如何通过一篇文章了解Python中的生成器
Python pyecharts绘制条形图详解
Python OpenCV超详细讲解读取图像视频和网络摄像头
基于Python实现股票收益率分析
You might like
C# Assembly类访问程序集信息
2009/06/13 PHP
php绝对路径与相对路径之间关系的的分析
2010/03/03 PHP
php的大小写敏感问题整理
2011/12/29 PHP
Laravel4中的Validator验证扩展用法详解
2016/07/26 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
PHP PDOStatement::fetch讲解
2019/01/31 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
JavaScript类和继承 this属性使用说明
2010/09/03 Javascript
用js实现控件的隐藏及style.visibility的使用
2013/06/14 Javascript
jquery 表格排序、实时搜索表格内容(附图)
2014/05/19 Javascript
JavaScript中的闭包介绍
2015/03/15 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
通过实例解析jQ Ajax操作相关原理
2020/09/23 Javascript
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
利用Python2下载单张图片与爬取网页图片实例代码
2017/12/25 Python
Python中join函数简单代码示例
2018/01/09 Python
Python使用遗传算法解决最大流问题
2018/01/29 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
世界最大的私人旅行指南出版商:孤独星球
2016/08/23 全球购物
广告学专业毕业生自荐信
2013/09/24 职场文书
高级工程师岗位职责
2013/12/15 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
2014年服务行业工作总结
2014/11/18 职场文书
银行先进个人总结
2015/02/15 职场文书
尼克胡哲观后感
2015/06/08 职场文书
Django实现在线无水印抖音视频下载(附源码及地址)
2021/05/06 Python
gateway网关接口请求的校验方式
2021/07/15 Java/Android
通过feDisplacementMap和feImage实现水波特效
2022/04/24 HTML / CSS