pdf添加水印的方法,如何在pdf文件上添加水印

  pdf添加水印的方法,如何在pdf文件上添加水印

  这篇文章主要介绍了计算机编程语言实现给普通便携文档格式添加水印的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  

目录

创建需要的水印模板文字处理系统创建输出可移植文档格式文件的扩展名(可移植文档格式的缩写)水印可移植文档格式文件的扩展名(可移植文档格式的缩写)实现步骤安装依赖代码问题使用pypdf2出现编码问题解决方法感悟

 

  

创建需要的水印模板

 

  

wps创建

 

  

输出pdf

 

  

水印pdf

 

  

实现步骤

 

  

安装依赖

 

  点安装PyPDF2

  

代码

 

  导入操作系统

  从PyPDF2导入PdfFileReader作为公共关系

  从PyPDF2导入PdfFileWriter作为女警

  def write _ watermark(水印_ pdf _路径:字符串,目标_ pdf _路径:字符串):

  result_pdf=pw()

  pdf _ file _ name=OS。路径。基本名称(目标pdf路径)

  f_target=open(target_pdf_path, rb )

  f _ watermark=open(watermark _ pdf _ path, rb )

  目标_pdf=pr(f_target)

  水印_页面=pr(f _水印)。获取页面(0)

  对于范围内的页面(target_pdf.getNumPages()):

  try: #这一段尝试除了是一个让我超级麻烦的bug,让我解决了一天。

  target_pdf.getPage(page).mergePage(watermark_page)

  结果_ pdf。添加页面(target _ pdf。获取页面(第页))

  e:除外

  结果_ pdf。添加页面(watermark _ page)

  如果不是os.path.exists("输出"):

  os.makedirs(output )

  result_pdf.write(open(output/已添加水印_ pdf _文件名, wb ))

  f_target.close()

  f_watermark.close()

  def folder _ pdf _ files(文件夹: str)-list[str]: #一个文件夹里面有多少可移植文档格式文件的扩展名(可移植文档格式的缩写)文件

  file_list=[]

  用于os.walk(文件夹):中的甲、乙、丙

  如果b==[]:

  对于c:中的文件名

  如果文件名[-3:]。lower()==pdf:

  file_path=os.path.join(a,文件名)

  文件列表附加(文件路径)

  打印(文件夹, :有,len(文件列表),个可移植文档格式文件的扩展名(可移植文档格式的缩写)文件)

  返回文件列表

  定义组_w

  rite_watermark(path_array: list[str], watermark_pdf_path: str): # 一组pdf文件添加水印

   for pdf_path in path_array:

   print(pdf_path, "添加水印中...")

   write_watermark(watermark_pdf_path, pdf_path)

   print("完成")

  if __name__ == __main__:

   watermark_pdf_path = "水印文件.pdf"

   folder_pdf = "目录" # 需要添加水印的pdf的目录

   pdf_list = folder_pdf_files(folder_pdf)

   group_write_watermark(pdf_list, watermark_pdf_path)

  

  

 

  

问题

 

  UnicodeEncodeError: ‘latin-1’ codec can’t encode characters in position 8-9: ordinal not in range(256)

  如果出现该错误,可以参考以下内容。

  

 

  

使用pypdf2出现编码问题

 

  报错信息

  ‘latin-1’ codec can’t encode characters in position 8-11: ordinal not in range(256)

  通常这情况是出现了中文字符编码问题

  以下是使用pypdf2复制 pdf 时报错信息

  

//报错信息

 

  

 

  

解决方法

 

  1、修改pypdf2包中的generic.py文件

  由于我使用的是anaconda,路径为anacondaLibsite-packagesPyPDF2generic.py

  generic.py文件第488行原文

  

try:

 

  改成

  

try:

 

  2、修改pypdf2包中的utils.py文件

  utils.py238行原文

  

 r = s.encode(latin-1)

 

  修改为

  

try:

 

  问题解决

  

 

  

感悟

 

  此代码的创新点在于可以实现文件夹遍历添加水印。

  其实第一点也没有什么,我感觉我最有成功感的就是write_watermark函数里那段try except语句处,这个一段代码解决pdf空白页而发送的错误。解决了一天,网络上都没有解决方法。我摸着石头过河。

  有一个问题就是,这个代码对于图片pdf的水印效果不好,因为图片pdf的也页面大小比普通的文字pdf大一些,难以控制水印的位置。我想的是在创建水印pdf的时候就把pdf的大小放大。

  到此这篇关于Python实现为pdf添加水印功能的文章就介绍到这了,更多相关Python pdf水印内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • php读取pdf数据,php pdf读取
  • php读取pdf数据,php pdf读取,PHP中使用mpdf 导出PDF文件的实现方法
  • kotlon协程,深入理解kotlin协程pdf,一文彻底搞懂Kotlin中的协程
  • 深入解析C#(第4版),深入解析css pdf,深入解析contentWindow, contentDocument
  • java 反射机制原理与用法详解视频,java 反射机制原理与用法详解pdf
  • java 反射机制原理与用法详解视频,java 反射机制原理与用法详解pdf,Java 反射机制原理与用法详解
  • ,,Java使用iTextPDF生成PDF文件的实现方法
  • ,,Python利用PyMuPDF实现PDF文件处理
  • 漫画算法小灰的算法之旅pdf,漫画算法2-小灰的算法进阶
  • devops和自动化运维实践 PDF,devops思想在运维方面的具体实践
  • pdf如何去除水印,pdf去水印的三种方法
  • 把a4的内容打印成a3小册子,a4的pdf文档如何打印成a3
  • nlp自然语言处理入门pdf,精通python自然语言处理 pdf
  • 容器docker基本操作,每天5分钟玩转docker容器技术 pdf
  • sklearn中文手册pdf下载,sklearn库模块及函数
  • 留言与评论(共有 条评论)
       
    验证码: