免费网站源码模板下载,网站源码 正在建设中,牡丹江网站制作,中国风网站欣赏通过PDF阅读或编辑工具#xff0c;可在PDF中加入Watermark标识的PDF水印#xff0c;如下图#xff1a;
该类水印特点
这类型的水印#xff0c;会在文件的字节流中出现/Watermark、EMC等标识#xff0c;那么#xff0c;我们可以通过改变文件字节内容#xff0c;清理掉…通过PDF阅读或编辑工具可在PDF中加入Watermark标识的PDF水印如下图
该类水印特点
这类型的水印会在文件的字节流中出现/Watermark、EMC等标识那么我们可以通过改变文件字节内容清理掉这些水印。
水印去除
安装pymupdf
pip install --upgrade pymupdf清理水印代码如下 移除PDF文件中的水印参数:input_pdf_path (str): 输入PDF文件的路径output_pdf_path (str): 输出PDF文件的路径def remove_pdf_watermark(input_pdf_path, output_pdf_path):# 打开PDF文件doc fitz.open(input_pdf_path)for page in doc:page.clean_contents() # 清理页面绘图命令xref page.get_contents()[0] # 获取页面字节流以xref的形式返回 cont0 doc.xref_stream(xref).decode() # 将流解码为字符串if /Watermark in cont0: # 找到水印标识start cont0.index(/Artifact) # 获取水印起始位置end cont0.index(EMC, start) # 获取水印结束位置cont cont0[:start] cont0[end:] # 替换掉水印doc.update_stream(xref, cont.encode()) # 更新流doc.save(output_pdf_path, garbage4) # 保存修改后的PDF文件 doc.close()代码功能解析
这段代码的功能是移除PDF文件中的水印。具体步骤如下
打开输入的PDF文件。遍历每一页清理页面绘图命令。获取页面字节流并解码为字符串。检查是否包含水印标识 /Watermark。如果找到水印定位其起始和结束位置并替换掉水印内容。更新页面字节流。保存修改后的PDF文件。
控制流图CFG 代码原理
开始程序开始执行。打开PDF文件使用 fitz.open 方法打开输入的PDF文件。遍历每一页检查是否还有未处理的页面。清理页面绘图命令调用 page.clean_contents 方法清理页面绘图命令。获取页面字节流并解码获取页面字节流并将其解码为字符串。是否包含水印标识检查解码后的字符串中是否包含水印标识 /Watermark。定位水印起始和结束位置如果找到水印标识定位其起始和结束位置。替换掉水印内容将水印部分从字符串中移除。更新页面字节流将修改后的内容重新编码并更新页面字节流。保存修改后的PDF文件保存修改后的PDF文件到指定路径。关闭PDF文件关闭PDF文件。结束程序结束执行。
程序运行效果