【PDF PicKiller】PDF批量删除固定位置图片工具,默认解密,可去一般图、背景图、水印图!

PDF批量删除固定位置图片工具 PDF PicKiller

  • <center>PDF PicKiller [Download](https://github.com/Peaceful-World-X/PDF-PicKiller)
  • 🤩 工具介绍
  • 🥳 主要功能
  • 🤪 软件使用
  • 🤪 参数解释
  • 🤪 关键代码
  • 🤩 项目代码

Alt

PDF PicKiller Download

🤩 工具介绍

PDF PicKiller 是基于Python的PDF批处理工具,默认无感解密,使用命令行界面批量删除固定位置图像、渐变背景图、水印图或字,后续还有可能添加新功能,额…如果软件有用的话~

🥳 主要功能

✨ 默认解密:无感处理(破解)加密的 PDF 文件(有打开权限),支持多种加密方式:RC4 128bits, AES 128bits, AES 256bits 等。
✨对象提取:检索模板页(默认第1页),并列出 XObject 图像、Shadings 背景图像和 Form 水印图。
✨批量删除:批量高效的删除列出的图像对象,平均速度为 0.2 秒 处理每 1000 页(每页 5 个删除对象)。
✨交互式命令行:命令行界面,表情样式可爱回复~

🤪 软件使用

  1. 命令行绿色可执行文件,双击食用~
  2. 直接拖入PDF文件,或输入文件地址
  3. 选择模板页(即有要删除图片的页面),默认第一页则回车
  4. 选择模板页中要删除的对象名,默认删除全部对象则回车
  5. 已批量删除打开文件路径~
  6. 随时按下 Ctrl+C 退出软件!

请添加图片描述

🤪 参数解释

文档一般图片:

  • 名字: /IM13, 宽度: 674, 高度: 149
  • 名字: /IM15, 宽度: 640, 高度: 640
    【这是一般图片,通过宽度和高度来区别,IM15高度更大,IM13高度更小】

渐变背景图片:

  • 名字: /FXS1, 类型: 2-径向渐变 (Radial), 坐标: [554.0, 0.85, 554.0, 253.6]
  • 名字: /FXS2, 类型: 2-径向渐变 (Radial), 坐标: [5.0321, 9.2981, 548.518, 249.612]
    【这是背景图片,通过渐变线起始坐标来区别,FXS1是水平渐变,FXS2是对角渐变】

水印图片:

  • 名字: /Form4, 类型: 图片, 边界: [0.0, 0.0, 182.0, 45.0]
  • 名字: /KSPX191, 类型: 文字, 边界: [0.0, -7.272, 288.0, 67.464]
    【这是水印图字,通过类型和边界框起始坐标来区别,Form4高度更小,KSPX191高度更大】

请添加图片描述

🤪 关键代码

  1. PDF解密
import pikepdf
pdf = pikepdf.open(input_pdf_path)# 判断是否加密
if not pdf.is_encrypted:pdf.close()return input_pdf_path
pdf.close()
# 如果加密,重新用密码打开
pdf = pikepdf.open(input_pdf_path)
output_file = input_pdf_path.replace('.pdf', '(decrypted).pdf')
pdf.save(output_file)
pdf.close()
print(f"\033[31m✅ 解密成功,保存为 {output_file}\033[0m")
return output_file
  1. 识别对象
def list_xobjects_and_shadings(page):result = {'images': [],  # 每个元素是 (name, width, height)'shadings': [],  # 每个元素是 (name, shading_type, coords)'watermarks': []  # 每个元素是 (name, resources, bbox)}try:resources = page.obj.get('/Resources')shadings = resources.get('/Shading')xobjects = resources.get('/XObject')# 处理XObject图像if xobjects is None: return resultfor name, obj_ref in xobjects.items():try:obj = obj_ref.get_object()subtype = obj.get('/Subtype')if subtype == '/Image':width = obj.get('/Width', 'Unknown')height = obj.get('/Height', 'Unknown')result['images'].append((name, width, height))elif subtype == '/Form':  # 检查是否为水印 (Form)# 提取水印的资源和边界框resources = obj.get('/Resources', 'Unknown')bbox = obj.get('/BBox', 'Unknown')bbox_list = [float(coord) for coord in bbox] if bbox else Noneresult['watermarks'].append((name, resources, bbox_list))except Exception as e_inner:print(f"⚠️ 哎呀! 无法读取 {name} 对象: {type(e_inner).__name__}: {e_inner}")continue# 处理Shading图像if shadings is None: return resultfor name, obj_ref in shadings.items():try:obj = obj_ref.get_object()obj = obj_refshading_type = obj.get('/ShadingType', 'Unknown')coords = obj.get('/Coords', None)coords_list = [float(coord) for coord in coords] if coords else Noneresult['shadings'].append((name, shading_type, coords_list))except Exception as e_inner:print(f"⚠️ 哎呀! 无法读取 Shading {name}: {type(e_inner).__name__}: {e_inner}")continueexcept Exception as e:print(f"⚠️ 糟糕! 列出XObject时出错: {type(e).__name__}: {e}")return result

🤩 项目代码

https://github.com/Peaceful-World-X/PDF-PicKiller

✨欢迎反馈BUG,后续会视情况添加新功能!
(代码是晚上为了处理一个PDF文件临时写的,有问题非常欢迎反馈~)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/83783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kubeadm安装k8s

1、环境准备 1.1、升级系统内核 参考另一篇文章&#xff1a;https://blog.csdn.net/u012533920/article/details/148457715?spm1011.2415.3001.5331 1.2、设置Hostname cat <<EOF > /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhos…

Vue基础(14)_列表过滤、列表排序

Array.prototype.filter()【ES5】 filter() 方法创建给定数组一部分的浅拷贝&#xff0c;其包含通过所提供函数实现的测试的所有元素。 语法&#xff1a; filter(callbackFn) filter(callbackFn, thisArg) 参数&#xff1a; callbackFn(回调函数)&#xff1a;为数组中的每个元…

ComfyUI 中如何使用 Depth ControlNet SD1.5

目录 SD1.5 Depth ControlNet 简介 Depth ControlNet 主要特点 SD1.5 Depth ControlNet工作流准备工作 1. 安装必要插件 方式一:使用 ComfyUI Manager(推荐) 方式二:通过 git 安装必要插件 方式三:手动安装(不推荐) 2.1 下载工作流所需模型 2.2 模型存放位置 SD…

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…

mysql的分页场景下,页数越大查询速度越慢的解决方法

一 问题描述 select * from table limit 0,10扫描满足条件的10行&#xff0c;返回10行&#xff0c; 但当limit 99989,10的时候数据读取就很慢,limit 99989,10的意思扫描满足条件的99999行&#xff0c;扔掉前面的99989行&#xff0c;返回最后的10行&#xff0c;这样速度就会很慢…

MDP的 Commands模块

文章目录 Isaac Lab Commands 模块详细指南&#x1f4cb; 模块概述&#x1f3d7;️ 模块架构&#x1f3aa; 命令类型详解1. &#x1f6ab; 空命令 (NullCommand)2. &#x1f3c3; 速度命令 (VelocityCommand)&#x1f3b2; 均匀分布速度命令 (UniformVelocityCommand)&#x1f…

全流程开源!高德3D贴图生成系统,白模一键生成真实感纹理贴图

导读 MVPainter 随着3D生成从几何建模迈向真实感还原&#xff0c;贴图质量正逐渐成为决定3D资产视觉表现的核心因素。我们团队自研的MVPainter系统&#xff0c;作为业内首个全流程开源的3D贴图生成方案&#xff0c;仅需一张参考图与任意白模&#xff0c;即可自动生成对齐精确…

Levenberg-Marquardt算法详解和C++代码示例

Levenberg-Marquardt&#xff08;LM&#xff09;算法是非线性最小二乘问题中常用的一种优化算法&#xff0c;它融合了高斯-牛顿法和梯度下降法的优点&#xff0c;在数值计算与SLAM、图像配准、机器学习等领域中应用广泛。 一、Levenberg-Marquardt算法基本原理 1.1 问题定义 …

理解网络协议

1.查看网络配置 : ipconfig 2. ip地址 : ipv4(4字节, 32bit), ipv6, 用来标识主机的网络地址 3.端口号(0~65535) : 用来标识主机上的某个进程, 1 ~ 1024 知名端口号, 如果是服务端的话需要提供一个特定的端口号, 客户端的话是随机分配一个端口号 4.协议 : 简单来说就是接收数据…

如何计算光伏工程造价预算表?

在光伏工程的推进过程中&#xff0c;造价预算表的编制是至关重要的环节&#xff0c;传统的光伏工程造价预算编制方法&#xff0c;往往依赖人工收集数据、套用定额&#xff0c;再进行繁琐的计算与汇总&#xff0c;不仅效率低下&#xff0c;而且容易出现人为误差&#xff0c;导致…

新闻速递|Altair 与佐治亚理工学院签署合作备忘录,携手推动航空航天领域创新

近日&#xff0c;全球计算智能领域领先企业 Altair 与佐治亚理工学院正式签署合作备忘录&#xff0c;旨在深化航空航天领域的技术创新合作。 根据协议&#xff0c;佐治亚理工学院的航空航天系统设计实验室 (ASDL) 将获得 Altair 的技术支持&#xff0c;运用仿真与数据分析 (DA)…

PLSQLDeveloper配置OracleInstantClient连接Oracle数据库

PL/SQLDeveloper配置Oracle Instant Client连接Oracle数据库 文章目录 PL/SQLDeveloper配置Oracle Instant Client连接Oracle数据库 1. Oracle Instant Client下载与配置1. Oracle Instant Client下载2. Oracle Instant Client解压配置1. 解压2. 配置 2. PL/SQL Developer下载、…

数据库系统学习

关系型数据库 关系型数据库建立在关系模型基础上的数据库&#xff0c;关系型数据库是由多张能相互相连的二维表组成的数据库 优点&#xff1a; 都是使用表结构&#xff0c;格式一致&#xff0c;易于维护使用通用的sql语言操作&#xff0c;使用方便&#xff0c;可用于复杂查询…

美国大休斯顿都会区电网数据

美国大休斯顿都会区&#xff08;Houston-The Woodlands-Sugar Land Metropolitan Area&#xff09;电网数据。数据包括&#xff1a;发电、输电、变电、配电。而且配电线路也很完善&#xff01;下面是截图&#xff1a; 输电线路 配电线路 变电站 开关站 电厂

信创主机性能测试实例(升腾P860)

文章目录 一、引言二、基准测试&#xff08;Unixbench &#xff09;三、CPU测试&#xff08;SPEC CPU 2006&#xff09;四、GPU测试&#xff08;Glmark2&#xff09;五、IO测试&#xff08;Iozone &#xff09;六、内存基准测试&#xff08;Stream &#xff09;七、网络性能基准…

Web前端基础:HTML-CSS

1.标题 1.1标题排版 超链接 a 标签&#xff1a; 标签&#xff1a;<a href"....." target".....">央视网</a> 属性&#xff1a; href: 指定资源访问的urltarget: 指定在何处打开资源链接 _self: 默认值&#xff0c;在当前页面打开_blank: 在…

Python数学可视化:3D参数曲面与隐式曲面绘制技术

Python数学可视化&#xff1a;3D参数曲面与隐式曲面绘制技术 引言 在科学研究、工程设计和数学教学中&#xff0c;3D可视化技术是理解复杂几何形状和空间关系的重要工具。本文将介绍如何使用Python实现参数曲面和隐式曲面的3D可视化&#xff0c;通过数学公式和代码示例展示球…

传输层:udp与tcp协议

目录 再谈端口号 端口号范围划分 认识知名端口号(Well-Know Port Number) 两个问题 netstat pidof 如何学习下三层协议 UDP协议 UDP协议端格式 UDP的特点 面向数据报 UDP的缓冲区 UDP使用注意事项 基于UDP的应用层协议 TCP协议 TCP协议段格式 1.源端口号…

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…

Keil调试模式下,排查程序崩溃简述

在Keil调试模式下&#xff0c;若程序崩溃&#xff0c;可以通过以下步骤来定位崩溃的位置&#xff1a; 一、查看调用栈&#xff08;Call Stack&#xff09; 打开调用栈窗口&#xff1a; 在Keil的调试模式下&#xff0c;点击菜单栏的“View” -> “Call Stack Window”&…