文字PDF转图片PDF,适合pdf防复制

devtools/2024/11/17 1:58:55/

完整代码已传至github平台:
https://github.com/yaunsine/text_pdf_to_image_pdf

分成两步操作:
1、将文字pdf输出成图片
2、将所有图片合成为pdf

将PDF文件输出为图片的形式
"""pdf转图片
"""
def pyMuPDF_fitz(pdfPath, imagePath):startTime_pdf2img = datetime.datetime.now()  # 开始时间create_directory(".\\output_img")print("imagePath=" + imagePath)pdfDoc = fitz.open(pdfPath)for pg in range(pdfDoc.pageCount):page = pdfDoc[pg]rotate = int(0)# 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。# 此处若是不做设置,默认图片大小为:792X612, dpi=96zoom_x = 1.33333333  # (1.33333333-->1056x816)   (2-->1584x1224)zoom_y = 1.33333333mat = fitz.Matrix(zoom_x, zoom_y).prerotate(rotate)pix = page.get_pixmap(matrix=mat, alpha=False)if not os.path.exists(imagePath):  # 判断存放图片的文件夹是否存在os.makedirs(imagePath)  # 若图片文件夹不存在就创建pix.save(imagePath + '/' + 'images_%s.png' % pg)  # 将图片写入指定的文件夹内endTime_pdf2img = datetime.datetime.now()  # 结束时间print('pdf2img时间=', (endTime_pdf2img - startTime_pdf2img).seconds)
将所有的图片合并成PDF
"""合并图片成pdf
"""
def merge_img_to_pdf(path: str, name: str):create_directory(".\\output_pdf")img_open_list = []                                 # 创建打开后的图片列表for root, dirs, files in os.walk(path):for i in files:file = os.path.join(root, i)               # 遍历所有图片,带绝对路径img_open = Image.open(file)                # 打开所有图片if img_open.mode != 'RGB':img_open = img_open.convert('RGB')     # 转换图像模式img_open_list.append(img_open)             # 把打开的图片放入列表# pdf_name = name + '.pdf'                           # pdf文件名pdf_name = nameimg_1 = img_open_list[0]                           # 打开的第一张图片# 把img1保存为PDF文件,将另外的图片添加进来,列表需删除第一张图片,不然会重复img_open_list = img_open_list[1:]img_1.save(pdf_name, "PDF", resolution=100.0, save_all=True, append_images=img_open_list)print('转换成功!pdf文件在当前程序目录下!')clear_imgs(path)

http://www.ppmy.cn/devtools/18518.html

相关文章

C语言:一维数组、二维数组、字符数组介绍

数组 介绍一维数组定义应用方法初始化 举例示例结果 二维数组定义应用方法初始化 举例示例结果 字符数组定义应用方法初始化 举例示例结果分析 介绍 在C语言中,数组是一种基本的数据结构,用于存储一系列相同类型的数据。数组可以是多维的,最…

探索设计模式的魅力:AI赋能分层模式,解构未来,智领风潮

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 探索设计模式的魅力:AI赋能分层模式,解构未来,智领风潮 ✨欢迎…

proteus+stm32+CubeMX+dht11+lcd1602

浅浅记录下过程遇到的问题🤡🤡🤡 1 供电网配置错误(加上就好了 新起个名也会出这个 / 电源不起名 不创建估计项目也会)没zet6的 proteus 里 固件库 账号注册半天没成 就用的stm32F103R6的然后发现单片机不输出高低电平…

用Python绘制了几张有趣的可视化图表

流程图存在于我们生活的方方面面,对于我们追踪项目的进展,做出各种事情的决策都有着巨大的帮助,而对于的Python而言呢,绘制流程图也是十分轻松的,今天小编就来为大家介绍两个用于绘制流程图的模块,我们先来…

【leetcode面试经典150题】75. 二叉树展开为链表(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

STL Array、ForwardList源码剖析

STL Array、ForwardList源码剖析 参考文章: https://blog.csdn.net/weixin_45389639/article/details/121618243 array 源代码 template<typename _Tp,std::size_t _Nm> struct array {typedef _Tp value_type;typedef _Tp* pointer;typedef value_type* iterator;// Su…

不同技术实现鼠标滚动图片的放大缩小

摘要&#xff1a; 最近弄PC端的需求时&#xff0c;要求在layui技术下实现鼠标滚动图片的放大缩小的功能&#xff01;下面来总结一下不同框架剩下这功能&#xff01; layui: 看了一下layui文档&#xff0c;其实这有自带的组件的&#xff01;但是又版本要求的!并且layui的官方文档…

vue elementui 动态追加下拉框、输入框

vue elementui 动态追加下拉框、输入框 上代码&#xff1a; <template><div><el-dialogappend-to-body:close-on-click-modal"false":close-on-press-escape"false"width"65%"close"onClose":modal-append-to-body&q…