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

ops/2025/3/19 10:37:16/

完整代码已传至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/ops/19947.html

相关文章

腾讯云邮件推送如何设置?群发邮件的技巧?

腾讯云邮件推送功能有哪些?怎么有效使用邮件推送? 腾讯云邮件推送以其稳定、高效的特点,受到了众多企业的青睐。那么,腾讯云邮件推送如何设置呢?又有哪些群发邮件的技巧呢?下面AokSend就来详细探讨一下。 …

基于粒子滤波器的电池剩余使用寿命计算matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 粒子滤波器基础 4.2 电池剩余使用寿命建模与预测 4.3 粒子滤波器在电池寿命预测中的应用 5.完整工程文件 1.课题概述 基于粒子滤波器的电池剩余使用寿命计算。根据已知的数据,预测未来…

Golang基础6-反射

反射 参考链接:Go 语言反射的实现原理 | Go 语言设计与实现 Go语言基础之反射 | 李文周的博客 https://juejin.cn/post/6844904177009688589 在程序运行期间对程序本身进行访问和修改的能力,程序在编译时,变量转换为内存地址,…

【QT进阶】Qt http编程之http相关类的简单介绍

往期回顾 【QT进阶】Qt Web混合编程之实现ECharts数据交互动态修改-CSDN博客 【QT进阶】Qt http编程之http与https简单介绍-CSDN博客 【QT进阶】Qt http编程之后端API测试工具postman使用介绍-CSDN博客 【QT进阶】Qt http编程之http相关类QNetworkAccessManager与QNetworkReque…

STM32单片机通过ST-Link 烧录和调试

系列文章目录 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. ST-LINK V2 2. 操作步骤 2.1 连接方式 2.2 驱动安装常规步骤 2.3 Keil中的设置 3. 调式仿真 4. 常见问题排查 1. ST-LINK V2 ST LINK v2下载器用于STM32单片机,可以下载程序、调试…

scss基础和css扩展

变量 定义变量 //app.scss $allpadding:20px; //声明颜色变量 $color//使用 import /assets/app.scss;.container{width: 100%;padding:$allpadding;} ⚠️scss中,中下划线和下划线是同一个东西 $link-color: blue; a {color: $link_color; }//编译后a {color: …

ImportError: cannot import name ‘Config‘ from ‘mmcv‘ 问题解决

报错信息&#xff1a; Traceback (most recent call last):File "train.py", line 12, in <module>from mmcv import Config, DictAction ImportError: cannot import name Config from mmcv (/xxx/lib/python3.7/site-packages/mmcv/__init__.py) 问题原因&…

吴恩达机器学习笔记:第 8 周-13 聚类(Clustering)13.3-13.5

目录 第 8 周 13、 聚类(Clustering)13.3 优化目标13.4 随机初始化13.5 选择聚类数 第 8 周 13、 聚类(Clustering) 13.3 优化目标 K-均值最小化问题&#xff0c;是要最小化所有的数据点与其所关联的聚类中心点之间的距离之和&#xff0c;因此 K-均值的代价函数&#xff08;又…