我有我的书面签名的扫描副本,我需要将其应用于签名块中的某些文档。我过去一直在 Windows 上执行此操作,但现在我只有 Linux。
这可能吗?如何在 Linux (Gnome 3) 中将签名图像添加到 PDF 文件?
Nat*_*ton 218
使用 Xournal,您可以注释 PDF 并添加自定义图像(例如透明的 PNG)。虽然它用于记录徒手笔记和绘图,但它也可以对 PDF 进行注释。
在 Ubuntu 上:
Tom*_*ell 50
我很惊讶地发现此页面上没有提及用于 Linux 的首要免费办公软件。LibreOffice Draw 将打开一个 PDF 并允许您插入图像。如果您的签名文件已作为具有透明背景的 PNG 存在于文件系统中,则可以轻而易举地将其放到页面上、更改大小并将其移动到 Draw 中。默认情况下,Draw 会将文档保存为 ODG,因此您需要将修改后的文档导出为 PDF。
dan*_*nza 28
很多人推荐 Xournal,但我发现它可以用作我无法使用的 Gimp 版本。因此,如果您熟悉 Gimp,我建议您尝试一下。
当我需要签署单页文件时,我会定期执行此操作,大约需要五分钟。不幸的是,如果您需要例如签署多页文档的每一页,这将不起作用。在后一种情况下,我只需打印、签名并再次扫描!
我找到了这个脚本,您可以修改它以将签名附加到现有的 PDF 文件。
你也可以从这个 pastebin URL 下载它:
AskUbuntu 上也有这个问答,它有许多其他方法可以做到这一点。问答题为:如何将图片放在现有的 pdf 文件上?.
小智 7
我对uPdf有相当好的体验。
sudo add-apt-repository ppa:atareao/updf
sudo apt-get update
sudo apt-get install -y updf
Run Code Online (Sandbox Code Playgroud)
然后通过在 Python 脚本中编辑 2 行来修复错误。
启动 uPdf,选择添加图像工具,在要签名的区域周围绘制一个矩形,然后选择带有签名的图像文件。具有透明背景的 PNG 效果最佳。
由于一些用户提到输出文件中的错误(清晰的签名但模糊的源文档),我建议使用xournalpp ( xournal++ ) 而不是 xournal。我没有遇到任何问题。
它打包在一些发行版中(在 Arch 中,pacman -Ss xournal只显示 xournalpp)并按预期工作。
来自Arch 维基:
Xournal++ (xournalpp) 是目前正在开发中的 Xournal 的继任者。如果你想要更新版本的 Xournal,那么你可以试试这个。它目前是稳定的,几乎没有导致崩溃的错误。
存储库链接:https : //github.com/xournalpp/xournalpp
小智 6
在将我自己的签名命令放入 shell 脚本时,我一直在寻找一种方法来交互选择签名应该去的区域。幸运的是,我发现了这个问题,并且Emmanuel Branlard的脚本包含了如何做到这一点的想法(使用xv)。我实现了以下几点:
display而不是xvstdbuf -oL和-update实时预览的选项pdftk stamp以防止图像质量下降gpgpdftkwipe所以这里是代码:
#!/bin/env zsh
#dependencies: pdftk, ImageMagick, gpg, wipe, openssl
signature=~/PGP/signature.png.gpg
f=${1%.pdf}
page=$2
density=144
bo=0.2 #baseline overlap in relation to y-size of the signature
pagecount=$(pdftk $f.pdf dump_data | grep NumberOfPages | sed "s/.*: //")
#sign on last page by default
if [ -z "$page" ]; then page=$pagecount; fi
function cleanup
{
echo "Cleaning up..."
rm $f.$page.pdf
wipe $f.$page.signature.pdf $f.$page.signed.pdf $f.signed.pdf signature.png
}
trap cleanup EXIT
echo "Signing document $f.pdf on page $page."
echo "Decrypting signature..."
gpg -d $signature > signature.png
identity=$(identify -format "%w,%h,%x,%y" signature.png)
sdata=(${(s/,/)identity})
echo "Please give the signature area with two clicks and finish by pressing ‘q’!"
#extract page
pdftk $f.pdf cat $page output $f.$page.pdf
cp $f.$page.pdf $f.$page.signed.pdf
size=$(identify -format "%wx%h" $f.$page.pdf)
#select signature area
display -density $sdata[3]x$sdata[4] -immutable -alpha off -update 1 -debug X11 -log "%e" -title "sign $f.pdf#$page" $f.$page.signed.pdf 2>&1 >/dev/null | \
grep --line-buffered "Button Press" | \
stdbuf -oL sed -r "s/^.*\+([0-9]+)\+([0-9]+).*$/\1,\2/" | \
while read line
do
p1=($p2)
p2=(${(s/,/)line})
if [ -n "$p1" ]
then
p=(0 0)
if (( p1[1] < p2[1] )); then dx=$((p2[1]-p1[1])); p[1]=$p1[1]; else dx=$((p1[1]-p2[1])); p[1]=$p2[1]; fi
if (( p1[2] < p2[2] )); then dy=$((p2[2]-p1[2])); p[2]=$p1[2]; else dy=$((p1[2]-p2[2])); p[2]=$p2[2]; fi
dy=$((dy*(1+bo)))
if (( $dx*$sdata[2] > $sdata[1]*$dy ))
then
resize=$(((dy+0.0)/sdata[2]))
p[1]=$((p[1]+(dx-resize*sdata[1])/2))
else
resize=$(((dx+0.0)/sdata[1]))
p[2]=$((p[2]+(dy-resize*sdata[2])/2))
fi
echo "Inserting signature..."
convert -density $density -size $size xc:transparent \( signature.png -resize $((resize*100))% \) -geometry +$p[1]+$p[2] -composite $f.$page.signature.pdf
pdftk $f.$page.pdf stamp $f.$page.signature.pdf output $f.$page.signed.pdf
unset p1 p2
fi
done
if [ -z "$p" ]
then
echo "You have to click two times. Aborting..."
exit 1
fi
echo "Joining PDF pages..."
sew=( pdftk A=$f.pdf B=$f.$page.signed.pdf cat )
if (( page > 1 )); then
sew+=A1-$((page-1))
fi
sew+=B
if (( page < pagecount )); then
sew+=A$((page+1))-end
fi
sew+=( output $f.signed.pdf )
$sew
echo "Encrypting PDF file..."
pdftk $f.signed.pdf output $f.signenc.pdf user_pw PROMPT owner_pw $(openssl rand -base64 32) allow AllFeatures
Run Code Online (Sandbox Code Playgroud)
小智 6
Okular PDF 查看器内置了注释。打开您要签名的 PDF,选择左侧栏上的评论,然后选择弹出菜单中的第三个选项“徒手画线”。画出你的签名。如果您想要黑色墨水而不是霓虹绿,请从菜单中选择“设置”,选择“配置 Okular”,然后选择左侧的“注释”按钮。从选项中选择“手绘线”,然后选择“编辑”按钮。您可以在此处调整线条粗细和颜色。点击“应用”并享受。
小智 5
在 Debian (Bullseye) 上,我发现最简单的 (?) 免费方法是使用Scribus 1.5.5,它可以轻松导入 PDF(这在早期版本中也可能):
导入 PDF,然后在您想要签名的位置制作一个图像框,选择您的签名文件,根据需要调整大小,然后导出为新的 PDF(当然,您可以使用文本框放置必要的文本,例如日期等)最终使用 GIMP 或类似工具并没有什么不同,但是如果您熟悉 Scribus,那么只需几秒钟即可完成。我刚刚完成了两次注销帐户,这就是我在这里结束的方式;)