Answers:
使用Xournal,您可以注释PDF并添加自定义图像(例如,透明的PNG)。尽管它用于记录徒手注释和绘图,但它也可以注释PDF。
在Ubuntu上:
我找到了您可以修改此脚本以将签名附加到现有PDF文件的脚本。
您也可以从以下pastebin URL下载它:
AskUbuntu上也有此问答,它提供了许多其他方法来执行此操作。问答标题为:如何在现有的pdf文件上放置图片?。
xv
?这太难安装了,xv
而且它不是免费软件……
很多人推荐Xournal,但我发现它可以作为我不能使用的Gimp版本使用。因此,如果您熟悉Gimp,我建议您尝试一下。
当我需要签署单页文档时,我会定期执行此操作,这大约需要五分钟。不幸的是,如果您需要例如对多页文档的每一页进行签名,则此方法将无效。在后一种情况下,我只是打印,签名并再次扫描!
xournal
不能真正正常工作,它的用户界面中似乎存在错误,并且在导入图像后无法缩放或移动图像。xv
没有编译,需要大量的C代码补丁,然后最终也不起作用。updf
或它的ubuntu PPA不再存在。(已在ubuntu xenial 2016年12月测试)gimp
是前进的道路,谢谢!
convert original_name.mng output_name.pdf
。就这样。顺便说一句,如果输出的分辨率很低,请在开始导入pdf时尝试扩大pdf图像的尺寸:尝试使用“ 2000”之类的宽度。导出为MNG时,不要忘记将选项“压缩级别”检查到最大,这样最终文件就不会太重。
我在uPdf方面有相当不错的经验。
sudo add-apt-repository ppa:atareao/updf
sudo apt-get update
sudo apt-get install -y updf
然后通过在Python脚本中编辑2行来修复错误。
启动uPdf,选择“ 添加图像”工具,在要签名签名的区域周围绘制一个矩形,然后选择带有签名的图像文件。具有透明背景的PNG效果最好。
lst
创建的文件中手动更改分发/etc/apt/sources.list.d
。
在将自己的签名命令放入shell脚本时,我正在寻找一种交互式选择签名应去的区域的方法。幸运的是,我发现了这个问题,伊曼纽尔·布兰拉德(Emmanuel Branlard)的脚本包含了有关如何做到这一点的想法(带有xv
)。我实现了以下几点:
display
代替xv
stdbuf -oL
并-update
可以进行实时预览pdftk stamp
以防止图像质量下降gpg
pdftk
wipe
所以这是代码:
#!/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
为了完整起见,有一个替代脚本可以执行此操作,与到目前为止提到的脚本相比,该脚本不会将pdf转换为(低质量)图像:https : //github.com/martinruenz/signpdf
我对其他解决方案的经验是:
updf确实对此非常有帮助。使用MacOS上的预览来“签名”文档后,updf可以提供与此最接近的用户体验。
以下适用于Ubuntu 14.10和Debian 8。
我不想将第三方ppa添加到我的系统中,因此以以下方式运行updf:
$ bzr branch lp:updf
然后根据其他答案进行2行编辑。
安装依赖项:
# apt-get install python-poppler gir1.2-gtk-3.0 gir1.2-gdkpixbuf-2.0 gir1.2-poppler-0.18 python-cairo librsvg2-2 gir1.2-rsvg-2.0 python-gi-cairo
(上面的内容就足够了;尽管不是每个包都必要)。
然后可以就地运行python程序:
$ ./src/updf.py
不幸的是,与输入文档相比,输出文档中的质量会受到严重影响。正确的方法是在无损过程中覆盖签名,而不更改原始签名。而updf似乎参与了原始文件的重新编码。
python-gi-cairo
依赖项才能使其正常工作。
我经营一家公司,而Xournal对我需要的pdf文件没有质量或控制范围。
我也一直在使用或应用数字签名。
Master PDF Editor(截止到目前的版本5)是一个付费应用程序,很容易超出预期,现在是Ubuntu的默认PDF阅读器。主要功能:-签署文档-填写表格-修改文本和对象-注释和突出显示文档-合并和拆分pdf文件-等等
有关更多详细信息,请访问:https : //code-industry.net/masterpdfeditor/?-about&ver=5438