Python批量给PDF加图片签名

此代码用于批量在PDF文件中添加签名图片,通过PyPDF2库实现PDF合成。然而,新保存的文档体积增大,可能由于合成过程中的压缩问题。此外,路径需手动修改,且签名图片质量会降低。解决办法包括优化合并策略和调整图片质量设置。
摘要由CSDN通过智能技术生成

源代码:
https://github.com/julis-wolala/PDFaddSign

问题描述:
批量给PDF添加签名(水印,图片),然后用同样的名字保存

原理:
先用word新建大小一样的空白文档,把签名图片放进你想要的位置,另存为sign.PDF
利用PyPDF2里面的PDF合成方法,把原PDF与你的sign.PDF合成保存,以达到添加签名的效果。

#将PDF文件夹里的所有pdf添加签名图片
import os
import PyPDF2

#读取签名pdf内容
SignPDF = PyPDF2.PdfFileReader(r".\signPDF\Sign.pdf")   

sourcepath=r".\outputPDF"
outputpath = r".\outputPDF"

#定义一个合成原PDF与签名PDF的方法
def add_sign(Sign_pdf,page_pdf):
    """
    将水印pdf与pdf的一页进行合并
    :param Sign_pdf:
    :param page_pdf:
    :return:
    """
    page_pdf.mergePage(Sign_pdf.getPage(0))
    return page_pdf

#遍历文件夹里的所有文件,然后添加图片签名
for root, dirs, files in os.walk(r".\sourcePDF", topdown=False):
    for name in files:
        address = os.path.join(root, name)
        print(address)
        pdfReader = PyPDF2.PdfFileReader(address) 
        # 遍历pdf的每一页,添加水印,该功能尚未实现
        for page in range(pdfReader.numPages):            
            page_pdf = add_sign(SignPDF, pdfReader.getPage(page))
            
        pdfWriter = PyPDF2.PdfFileWriter()
        pdfWriter.addPage(page_pdf)

        #获取文件名
        filename=os.path.basename(address)
        print(filename)
        #生成输出路径
        completePosition=os.path.join(outputpath,filename)
        #把结果保存到新文件夹里
        with open(completePosition, 'wb') as target_file:
            pdfWriter.write(target_file)

如果程序执行报错需要改一下Poweshell的执行策略,terminal执行即可

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

待解决的问题:

  1. 新保存的文档很大,不知道为什么
  2. 该代码需要手动改路径
  3. 该方案插入的签名图片质量会被降低
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值