当前位置: 首页 > 工具软件 > SignPDF > 使用案例 >

Python批量给PDF加图片签名

慕容晔
2023-12-01

源代码:
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. 该方案插入的签名图片质量会被降低
 类似资料: