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 相关文章推荐
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
May 06 Python
Python3中的真除和Floor除法用法分析
Mar 16 Python
Python3多线程操作简单示例
May 22 Python
matplotlib savefig 保存图片大小的实例
May 24 Python
使用Python机器学习降低静态日志噪声
Sep 29 Python
Python中numpy模块常见用法demo实例小结
Mar 16 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
Sep 07 Python
keras的ImageDataGenerator和flow()的用法说明
Jul 03 Python
python3实现名片管理系统(控制台版)
Nov 29 Python
如何利用python生成MD5并去重
Dec 07 Python
python脚本框架webpy模板控制结构
Nov 20 Python
python周期任务调度工具Schedule使用详解
Nov 23 Python
python 实现图片特效处理
教你使用Python获取QQ音乐某个歌手的歌单
Python os和os.path模块详情
如何通过一篇文章了解Python中的生成器
Python pyecharts绘制条形图详解
Python OpenCV超详细讲解读取图像视频和网络摄像头
基于Python实现股票收益率分析
You might like
用PHP实现ODBC数据分页显示一例
2006/10/09 PHP
php ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
PHP 开发环境配置(测试开发环境)
2010/04/28 PHP
php使用Smarty的相关注意事项及访问变量的几种方式
2011/12/08 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
php连接mysql数据库
2017/03/21 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
JS实现商品倒计时实现代码
2013/05/03 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
javascript 动态创建表格
2015/01/08 Javascript
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
python中的闭包用法实例详解
2015/05/05 Python
python实现字符串中字符分类及个数统计
2018/09/28 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
Python集合基本概念与相关操作实例分析
2019/10/30 Python
Python数据分析pandas模块用法实例详解
2019/11/20 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
Python 通过监听端口实现唯一脚本运行方式
2020/05/05 Python
使用CSS3来绘制一个月食图案
2015/07/18 HTML / CSS
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
html5声频audio和视频video等新特性详细说明
2012/12/26 HTML / CSS
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
世界顶级户外运动品牌折扣网站:LeftLane Sports
2019/06/12 全球购物
英国家居用品和家居装饰品购物网站:Cox & Cox
2019/08/25 全球购物
运动会跳远加油稿
2014/02/20 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
温馨祝福晨语:美丽的一天从我的问候开始
2019/11/28 职场文书
Python re.sub 反向引用的实现
2021/07/07 Python
SQL Server 中的事务介绍
2022/05/20 SQL Server