我这样制作个人电子签名:简化签字扫描流程,方便且清晰

本文最后更新于 2024年2月2日。

如果你来找软件下载,请关注下面公众号并回复相应关键词。

为什么会有这篇文章

在日常办公中,报告需要签字是常见的需求。我们常常需要经历打印-签名-扫描的流程,然后再用软件将扫描后的签名和原报告的PDF进行拼接。这个过程不仅耗时,而且扫描后的文件质量和观感也无法达到理想的效果。

鉴于这样的困扰,我探索了一种实际操作并实际使用的方法,可以帮助我们制作并使用个人电子签名。此方法完全免费,并在本地完成,因此无需担心个人信息泄露的问题。

下面是我制作和使用自己的电子签名的过程。

自制电子签名步骤

在白纸上手写签名

首先,在一张干净的白纸上用钢笔或者墨水笔手写你的签名。为了使签名更加鲜明清晰,这里建议用稍微粗一些的笔尖。

我这里以”周树人“为例,由于现在手头的笔质量一般,所以写出来的效果不是特别好。我写自己签名的时候用水笔写的,效果更好。

拍照截取

签名完成后,用手机或者扫描仪扫描你的签名。这里要保证整个拍摄过程中,光线充足且尽量避免阴影的影响。签名需要占据图片的主体部分。
我这里灯光不是太均匀,但整体还可以。
edbe82be6c5204c5cae0815261260c6.jpg

去除白色背景,使签名透明

将签名的图片导入到电脑上后,我们使用Python脚本进行处理,去除白色背景,使得签名部分透明。这需要借助图像处理库Pillow,同时,我使用tk构建了一个GUI界面,使得整个操作更加方便直观。为了不影响阅读,我把代码放在文末,供有一定基础的朋友使用,如果你没有基础也没关系,我会提供打包后可以直接运行的程序。
界面是这样:
image.png
使用也很简单:
运行程序后,点击”选择图片按钮“,选中你刚才截取的签名图片,然后点击”开始处理“按钮,就把处理好的签名保存下来了。

如果效果不好可以调整界面上的最小值,对于白底黑字,如果处理后笔画中有中断的就把最小值适当调大,有过有白边就把最小值往小调一些。

下面我把我处理的效果图放出来让大家有更加直观的理解,在这里我对图片做了旋转。

最小值设置成50时的效果:
image.png

最小值设置成150时的效果:
image.png
大家可以适当调整该值获得最佳效果。
经过我的测试,一般来说,纸笔笔质量好,字写得粗一点,保持我设置的默认值就可以。

保存并使用电子签名

现在你已经有了一个透明背景的个人签名,你可以将它保存起来,并在需要的时候复制粘贴至电子文件上。这样,你就无需再经历繁琐的打印-签字-扫描的过程,大大提升了工作效率,也保持了文件的整洁美观。
大多数pdf编辑器都支持pdf签名,把签名图片放进去调整一下就可以了。

为了防止有人不会,我这里把我用的方法写出来。

我使用的是StirlingPDF,StirlingPDF是一款方便易用的PDF编辑器,可以用于添加和修改PDF文件中的文本,插入图片,创建和填写表格,还可以添加电子签名。为什么用这个?因为它是开源免费本地程序,不用联网,安全性更好,不用担心信息泄露问题,并且功能丰富。
以下是如何使用StirlingPDF添加电子签名的过程。

使用StirlingPDF进行电子签名教程

下载和安装StirlingPDF工具

首先,你需要在你的电脑上安装StirlingPDF。先在其官方网站上下载安装程序,然后遵照提示完成安装。

项目地址:https://github.com/Stirling-Tools/Stirling-PDF

由于大多数人无法访问下载,我已经下载最新版上传到网盘,可以在公众号消息回复”StirlingPDF“获取下载链接。
下载后运行程序界面如下:
image.png

地球标志可以切换语言,我们使用“标志”这一项进行电子签名。

打开PDF文件

点击““标志””进入签署页面,然后选择“选择文件”。在弹出的窗口中,找到你想要编辑的PDF文件,点击“打开”。

选择插入签名的位置

在文件中,找到你想要添加签名的位置。然后点击工具框中的“签名”工具。在弹出的对话框中,选择“创建新签名”。

加载你的电子签名

在新窗口中,你可以上传你的电子签名,点击“从图片导入”。找到你的电子签名的文件,点击“打开”。

插入电子签名

现在你的电子签名已经加载到StirlingPDF中了。你可以点击“添加签名”,然后在文件的需要签名的地方,点击一下。你的签名就会插入到那个位置。

调整签名的大小和位置

你可以通过拖动签名的四个角,来调整签名的大小。同时,你可以通过拖动签名,来改变签名的位置。

保存文件

最后,当你对签名的大小和位置满意后,点击工具框中的“保存”按钮,将你的文件保存起来。
效果如下:
image.png

以上,就是在StirlingPDF中添加电子签名的全部步骤。这样,你就可以非常方便地将你的电子签名添加到任何PDF文件中,节省时间,提高效率。
如果上面的说明不够具体,可以看下面这张图,我把步骤都体现了。
image.png

附程序源码


import tkinter as tk
from tkinter import filedialog, messagebox
from PIL import Image, ImageTk
import qrcode

def create_qr_code(help_link):
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        # box_size=10,
        box_size=5,
        border=1,
    )
    qr.add_data(help_link)
    qr.make(fit=True)
    return qr.make_image(fill="black", back_color="white")

def remove_background(image_path, max_value, min_value):

    img = Image.open(image_path)
    img = img.convert("RGBA")
    datas = img.getdata()
    new_data = []
    for item in datas:
        if all([x > min_value and x < max_value for x in item]): 
            new_data.append((255, 255, 255, 0))
        else:
            new_data.append(item)

    img.putdata(new_data)
    img.save("我的签名图片-透明背景.png", "PNG")
    return "我的签名图片-透明背景.png"

def select_image():
    filename = filedialog.askopenfilename()
    if filename:
        img_path.set(filename)

def process():
    output_path = remove_background(img_path.get(), int(max_value.get()), int(min_value.get()))
    messagebox.showinfo("处理完成", f"图片已保存到: {output_path}")


root = tk.Tk()
root.title('签名图片透明化')
root.geometry('300x400+30+30')

img_path = tk.StringVar()
max_value = tk.StringVar()
min_value = tk.StringVar()


min_value.set(10) # 对于白底黑字签名,值越小越不容易有白边
max_value.set(256)
 
help_link_image = create_qr_code('http://www.weiyoun.com')
# help_link_photo = ImageTk.PhotoImage(help_link_image,height=10,width=10)
help_link_photo = ImageTk.PhotoImage(help_link_image,size=(10,10))
# help_link_image.grid()


filepath_label = tk.Label(root, text="路径").grid(row=5, column=1)
img_path_entry = tk.Entry(root, textvariable=img_path)
img_path_entry.insert(0,r'签名.png')
img_path_entry.grid(row=5, column=2)
button = tk.Button(root, text="选择图片", command=select_image)
button.grid(row=5, column=3)

min_value_label = tk.Label(root, text="最小值").grid(row=10, column=1)
min_value_input = tk.Entry(root, textvariable=min_value).grid(row=10, column=2)
max_value_label = tk.Label(root, text="最大值").grid(row=12, column=1)
max_value_input = tk.Entry(root, textvariable=max_value).grid(row=12, column=2)
button_process = tk.Button(root, text="开始处理", command=process,background='green')
button_process.grid(row=15, column=3)

hlep_label = tk.Label(root, text="扫码获取帮助").grid(row=20, column=1,columnspan=2)
img_label = tk.Label(root, image=help_link_photo)
img_label.grid(row=30, column=1,columnspan=2)


root.mainloop()

附打包程序

公众回复消息”签名制作程序“即可获取背景透明处理程序。

公众号消息回复”StirlingPDF“即可获取StirlingPDF程序。

以上两个程序的用途不局限于我文章中提到的用法,我写的程序也可以用于其他你需要透明背景图片的地方,而开源的StirlingPDF功能更是非常丰富,让pdf处理更加简单方便。

希望你用的愉快!

点赞是一种态度、关注是一种信任、评论是一种思想、朋友是永远的福、愿你天天笑哈哈、幸福年复年。