为什么会有这篇文章
在日常办公中,报告需要签字是常见的需求。我们常常需要经历打印-签名-扫描的流程,然后再用软件将扫描后的签名和原报告的PDF进行拼接。这个过程不仅耗时,而且扫描后的文件质量和观感也无法达到理想的效果。
鉴于这样的困扰,我探索了一种实际操作并实际使用的方法,可以帮助我们制作并使用个人电子签名。此方法完全免费,并在本地完成,因此无需担心个人信息泄露的问题。
下面是我制作和使用自己的电子签名的过程。
自制电子签名步骤
在白纸上手写签名
首先,在一张干净的白纸上用钢笔或者墨水笔手写你的签名。为了使签名更加鲜明清晰,这里建议用稍微粗一些的笔尖。
我这里以"周树人"为例,由于现在手头的笔质量一般,所以写出来的效果不是特别好。我写自己签名的时候用水笔写的,效果更好。
拍照截取
签名完成后,用手机或者扫描仪扫描你的签名。这里要保证整个拍摄过程中,光线充足且尽量避免阴影的影响。签名需要占据图片的主体部分。 我这里灯光不是太均匀,但整体还可以。
去除白色背景,使签名透明
将签名的图片导入到电脑上后,我们使用Python脚本进行处理,去除白色背景,使得签名部分透明。这需要借助图像处理库Pillow,同时,我使用tk构建了一个GUI界面,使得整个操作更加方便直观。为了不影响阅读,我把代码放在文末,供有一定基础的朋友使用,如果你没有基础也没关系,我会提供打包后可以直接运行的程序。 界面是这样: 使用也很简单: 运行程序后,点击"选择图片按钮",选中你刚才截取的签名图片,然后点击"开始处理"按钮,就把处理好的签名保存下来了。
如果效果不好可以调整界面上的最小值,对于白底黑字,如果处理后笔画中有中断的就把最小值适当调大,有过有白边就把最小值往小调一些。
下面我把我处理的效果图放出来让大家有更加直观的理解,在这里我对图片做了旋转。
最小值设置成50时的效果:
最小值设置成150时的效果: 大家可以适当调整该值获得最佳效果。 经过我的测试,一般来说,纸笔笔质量好,字写得粗一点,保持我设置的默认值就可以。
保存并使用电子签名
现在你已经有了一个透明背景的个人签名,你可以将它保存起来,并在需要的时候复制粘贴至电子文件上。这样,你就无需再经历繁琐的打印-签字-扫描的过程,大大提升了工作效率,也保持了文件的整洁美观。 大多数pdf编辑器都支持pdf签名,把签名图片放进去调整一下就可以了。
为了防止有人不会,我这里把我用的方法写出来。
我使用的是StirlingPDF,StirlingPDF是一款方便易用的PDF编辑器,可以用于添加和修改PDF文件中的文本,插入图片,创建和填写表格,还可以添加电子签名。为什么用这个?因为它是开源免费本地程序,不用联网,安全性更好,不用担心信息泄露问题,并且功能丰富。 以下是如何使用StirlingPDF添加电子签名的过程。
使用StirlingPDF进行电子签名教程
下载和安装StirlingPDF工具
首先,你需要在你的电脑上安装StirlingPDF。先在其官方网站上下载安装程序,然后遵照提示完成安装。
项目地址:github.com/Stirling-To...
由于大多数人无法访问下载,我已经下载最新版上传到网盘,可以在公众号消息回复"StirlingPDF"获取下载链接。 下载后运行程序界面如下:
地球标志可以切换语言,我们使用"标志"这一项进行电子签名。
打开PDF文件
点击""标志""进入签署页面,然后选择"选择文件"。在弹出的窗口中,找到你想要编辑的PDF文件,点击"打开"。
选择插入签名的位置
在文件中,找到你想要添加签名的位置。然后点击工具框中的"签名"工具。在弹出的对话框中,选择"创建新签名"。
加载你的电子签名
在新窗口中,你可以上传你的电子签名,点击"从图片导入"。找到你的电子签名的文件,点击"打开"。
插入电子签名
现在你的电子签名已经加载到StirlingPDF中了。你可以点击"添加签名",然后在文件的需要签名的地方,点击一下。你的签名就会插入到那个位置。
调整签名的大小和位置
你可以通过拖动签名的四个角,来调整签名的大小。同时,你可以通过拖动签名,来改变签名的位置。
保存文件
最后,当你对签名的大小和位置满意后,点击工具框中的"保存"按钮,将你的文件保存起来。 效果如下:
以上,就是在StirlingPDF中添加电子签名的全部步骤。这样,你就可以非常方便地将你的电子签名添加到任何PDF文件中,节省时间,提高效率。 如果上面的说明不够具体,可以看下面这张图,我把步骤都体现了。
附程序源码
ini
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处理更加简单方便。
「希望你用的愉快!」
点赞是一种态度、关注是一种信任、评论是一种思想、朋友是永远的福、愿你天天笑哈哈、幸福年复年。
为什么会有这篇文章
在日常办公中,报告需要签字是常见的需求。我们常常需要经历打印-签名-扫描的流程,然后再用软件将扫描后的签名和原报告的PDF进行拼接。这个过程不仅耗时,而且扫描后的文件质量和观感也无法达到理想的效果。
鉴于这样的困扰,我探索了一种实际操作并实际使用的方法,可以帮助我们制作并使用个人电子签名。此方法完全免费,并在本地完成,因此无需担心个人信息泄露的问题。
下面是我制作和使用自己的电子签名的过程。
自制电子签名步骤
在白纸上手写签名
首先,在一张干净的白纸上用钢笔或者墨水笔手写你的签名。为了使签名更加鲜明清晰,这里建议用稍微粗一些的笔尖。
我这里以"周树人"为例,由于现在手头的笔质量一般,所以写出来的效果不是特别好。我写自己签名的时候用水笔写的,效果更好。
拍照截取
签名完成后,用手机或者扫描仪扫描你的签名。这里要保证整个拍摄过程中,光线充足且尽量避免阴影的影响。签名需要占据图片的主体部分。 我这里灯光不是太均匀,但整体还可以。
去除白色背景,使签名透明
将签名的图片导入到电脑上后,我们使用Python脚本进行处理,去除白色背景,使得签名部分透明。这需要借助图像处理库Pillow,同时,我使用tk构建了一个GUI界面,使得整个操作更加方便直观。为了不影响阅读,我把代码放在文末,供有一定基础的朋友使用,如果你没有基础也没关系,我会提供打包后可以直接运行的程序。 界面是这样: 使用也很简单: 运行程序后,点击"选择图片按钮",选中你刚才截取的签名图片,然后点击"开始处理"按钮,就把处理好的签名保存下来了。
如果效果不好可以调整界面上的最小值,对于白底黑字,如果处理后笔画中有中断的就把最小值适当调大,有过有白边就把最小值往小调一些。
下面我把我处理的效果图放出来让大家有更加直观的理解,在这里我对图片做了旋转。
最小值设置成50时的效果:
最小值设置成150时的效果: 大家可以适当调整该值获得最佳效果。 经过我的测试,一般来说,纸笔笔质量好,字写得粗一点,保持我设置的默认值就可以。
保存并使用电子签名
现在你已经有了一个透明背景的个人签名,你可以将它保存起来,并在需要的时候复制粘贴至电子文件上。这样,你就无需再经历繁琐的打印-签字-扫描的过程,大大提升了工作效率,也保持了文件的整洁美观。 大多数pdf编辑器都支持pdf签名,把签名图片放进去调整一下就可以了。
为了防止有人不会,我这里把我用的方法写出来。
我使用的是StirlingPDF,StirlingPDF是一款方便易用的PDF编辑器,可以用于添加和修改PDF文件中的文本,插入图片,创建和填写表格,还可以添加电子签名。为什么用这个?因为它是开源免费本地程序,不用联网,安全性更好,不用担心信息泄露问题,并且功能丰富。 以下是如何使用StirlingPDF添加电子签名的过程。
使用StirlingPDF进行电子签名教程
下载和安装StirlingPDF工具
首先,你需要在你的电脑上安装StirlingPDF。先在其官方网站上下载安装程序,然后遵照提示完成安装。
项目地址:github.com/Stirling-To...
由于大多数人无法访问下载,我已经下载最新版上传到网盘,可以在公众号消息回复"StirlingPDF"获取下载链接。 下载后运行程序界面如下:
地球标志可以切换语言,我们使用"标志"这一项进行电子签名。
打开PDF文件
点击""标志""进入签署页面,然后选择"选择文件"。在弹出的窗口中,找到你想要编辑的PDF文件,点击"打开"。
选择插入签名的位置
在文件中,找到你想要添加签名的位置。然后点击工具框中的"签名"工具。在弹出的对话框中,选择"创建新签名"。
加载你的电子签名
在新窗口中,你可以上传你的电子签名,点击"从图片导入"。找到你的电子签名的文件,点击"打开"。
插入电子签名
现在你的电子签名已经加载到StirlingPDF中了。你可以点击"添加签名",然后在文件的需要签名的地方,点击一下。你的签名就会插入到那个位置。
调整签名的大小和位置
你可以通过拖动签名的四个角,来调整签名的大小。同时,你可以通过拖动签名,来改变签名的位置。
保存文件
最后,当你对签名的大小和位置满意后,点击工具框中的"保存"按钮,将你的文件保存起来。 效果如下:
以上,就是在StirlingPDF中添加电子签名的全部步骤。这样,你就可以非常方便地将你的电子签名添加到任何PDF文件中,节省时间,提高效率。 如果上面的说明不够具体,可以看下面这张图,我把步骤都体现了。
附程序源码
ini
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处理更加简单方便。
「希望你用的愉快!」
点赞是一种态度、关注是一种信任、评论是一种思想、朋友是永远的福、愿你天天笑哈哈、幸福年复年。