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的即时标记项目练习笔记
Sep 18 Python
python实现批量监控网站
Sep 09 Python
python2.7的编码问题与解决方法
Oct 04 Python
python利用requests库进行接口测试的方法详解
Jul 06 Python
Python SQL查询并生成json文件操作示例
Aug 17 Python
python开发准备工作之配置虚拟环境(非常重要)
Feb 11 Python
Python input函数使用实例解析
Nov 22 Python
Python 模拟动态产生字母验证码图片功能
Dec 24 Python
详解python如何引用包package
Jun 07 Python
Python使用Chrome插件实现爬虫过程图解
Jun 09 Python
基于Python制作一副扑克牌过程详解
Oct 19 Python
聊聊Python中关于a=[[]]*3的反思
Jun 02 Python
python 实现图片特效处理
教你使用Python获取QQ音乐某个歌手的歌单
Python os和os.path模块详情
如何通过一篇文章了解Python中的生成器
Python pyecharts绘制条形图详解
Python OpenCV超详细讲解读取图像视频和网络摄像头
基于Python实现股票收益率分析
You might like
php cookie 登录验证示例代码
2009/03/16 PHP
php入门学习知识点四 PHP正则表达式基本应用
2011/07/14 PHP
php 字符串替换的方法
2012/01/10 PHP
php遍历删除整个目录及文件的方法
2015/03/13 PHP
phpcms中的评论样式修改方法
2016/10/21 PHP
php读取本地json文件的实例
2018/03/07 PHP
分享8个Laravel模型时间戳使用技巧小结
2020/02/12 PHP
JavaScript自定义事件介绍
2013/08/29 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
javascript生成大小写字母
2015/07/03 Javascript
理解javascript异步编程
2016/01/27 Javascript
JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)
2016/06/12 Javascript
浅析JavaScript中命名空间namespace模式
2016/06/22 Javascript
jQuery EasyUI封装简化操作
2016/09/18 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
React如何将组件渲染到指定DOM节点详解
2017/09/08 Javascript
js拖动滑块和点击水波纹效果实例代码
2018/10/16 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
python文件和目录操作方法大全(含实例)
2014/03/12 Python
Python批量转换文件编码格式
2015/05/17 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
Tensorflow中使用tfrecord方式读取数据的方法
2018/06/19 Python
Python2与Python3的区别实例分析
2019/04/11 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
2019/05/13 Python
Python爬取365好书中小说代码实例
2020/02/28 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
党支部班子“四风”问题自我剖析材料
2014/09/28 职场文书