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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。