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警察与小偷的实现之一客户端与服务端通信实例
Oct 09 Python
python实现中文分词FMM算法实例
Jul 10 Python
Python统计文件中去重后uuid个数的方法
Jul 30 Python
解决python2.7 查询mysql时出现中文乱码
Oct 09 Python
python tkinter canvas 显示图片的示例
Jun 13 Python
Pandas之Fillna填充缺失数据的方法
Jun 25 Python
python多线程实现TCP服务端
Sep 03 Python
Python GUI自动化实现绕过验证码登录
Jan 10 Python
python实现最速下降法
Mar 24 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
Apr 02 Python
keras 如何保存最佳的训练模型
May 25 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 Python
python 实现图片特效处理
教你使用Python获取QQ音乐某个歌手的歌单
Python os和os.path模块详情
如何通过一篇文章了解Python中的生成器
Python pyecharts绘制条形图详解
Python OpenCV超详细讲解读取图像视频和网络摄像头
基于Python实现股票收益率分析
You might like
php Http_Template_IT类库进行模板替换
2009/03/19 PHP
Windows下安装Memcached的步骤说明
2010/04/25 PHP
PHP实现图片的等比缩放和Logo水印功能示例
2017/05/04 PHP
为何说PHP引用是个坑,要慎用
2018/04/02 PHP
JavaScript的Cookies
2008/01/16 Javascript
jquery 经典动画菜单效果代码
2010/01/26 Javascript
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
利用JQuery的load函数动态加载其它页面的内容的实现代码
2010/12/14 Javascript
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
Vue中计算属性computed的示例解读
2017/07/26 Javascript
vue实现动态添加数据滚动条自动滚动到底部的示例代码
2018/07/06 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
微信小程序之下拉列表实现方法解析(附完整源码)
2019/08/23 Javascript
js 解析 JSON 数据简单示例
2020/04/21 Javascript
在Vue中创建可重用的 Transition的方法
2020/06/02 Javascript
python画图把时间作为横坐标的方法
2019/07/07 Python
Flask-WTF表单的使用方法
2019/07/12 Python
python实现中文文本分句的例子
2019/07/15 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
2020/11/19 Python
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
塔吉特百货公司官网:Target
2017/04/27 全球购物
统计员岗位职责
2013/11/14 职场文书
幼儿园实习生辞职信
2014/01/20 职场文书
党员干部2014全国两会学习心得体会
2014/03/10 职场文书
大型活动组织方案
2014/05/10 职场文书
大学计划书范文800字
2014/08/14 职场文书
全陪导游词
2015/02/04 职场文书
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python