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多线程抓取天涯帖子内容示例
Apr 03 Python
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
Apr 15 Python
在树莓派2或树莓派B+上安装Python和OpenCV的教程
Mar 30 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
Aug 23 Python
python 字典(dict)按键和值排序
Jun 28 Python
深入浅出学习python装饰器
Sep 29 Python
Window环境下Scrapy开发环境搭建
Nov 18 Python
Python使用post及get方式提交数据的实例
Jan 24 Python
python 判断字符串中是否含有汉字或非汉字的实例
Jul 15 Python
opencv调整图像亮度对比度的示例代码
Sep 27 Python
python中绕过反爬虫的方法总结
Nov 25 Python
python处理json数据文件
Apr 11 Python
python 实现图片特效处理
教你使用Python获取QQ音乐某个歌手的歌单
Python os和os.path模块详情
如何通过一篇文章了解Python中的生成器
Python pyecharts绘制条形图详解
Python OpenCV超详细讲解读取图像视频和网络摄像头
基于Python实现股票收益率分析
You might like
PHP初学者头疼问题总结
2006/10/09 PHP
php程序的国际化实现方法(利用gettext)
2011/08/14 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
在jQuery ajax中按钮button和submit的区别分析
2012/10/07 Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
2013/12/26 Javascript
用js传递value默认值的示例代码
2014/09/11 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
js中数组结合字符串实现查找(屏蔽广告判断url等)
2016/03/30 Javascript
JS修改地址栏参数实例代码
2016/06/14 Javascript
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
Babel 入门教程学习笔记
2018/06/13 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
vue组件之间数据传递的方法实例分析
2019/02/12 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python字符串连接方法分析
2016/04/12 Python
Python采用Django制作简易的知乎日报API
2016/08/03 Python
python代码实现ID3决策树算法
2017/12/20 Python
windows 下python+numpy安装实用教程
2017/12/23 Python
python构建深度神经网络(续)
2018/03/10 Python
对Python 2.7 pandas 中的read_excel详解
2018/05/04 Python
python3中的md5加密实例
2018/05/29 Python
python绘制热力图heatmap
2020/03/23 Python
python ddt数据驱动最简实例代码
2019/02/22 Python
python中import与from方法总结(推荐)
2019/03/21 Python
python 机器学习之支持向量机非线性回归SVR模型
2019/06/26 Python
python代码xml转txt实例
2020/03/10 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
大学应届生求职简历的自我评价
2013/10/08 职场文书
大学本科毕业生求职简历的自我评价
2013/10/09 职场文书
怎样写好自我鉴定
2013/12/04 职场文书
喷漆工的岗位职责
2014/03/17 职场文书
拓展策划方案
2014/06/03 职场文书