J'ai une copy scannée de ma signature écrite et je dois l'appliquer à certains documents dans le bloc de signature. J'avais l'habitude de le faire sur Windows tout le time mais je n'ai maintenant que Linux.
Est-ce possible? Comment puis-je append une image de signature à un file PDF sous Linux (Gnome 3)?
Avec Xournal, vous pouvez annoter des files PDF et append des images personnalisées (par exemple un file PNG transparent). Bien qu'il soit utilisé pour prendre des notes à main levée et dessiner, il peut aussi annoter des PDF.
Sur Ubuntu:
Plus d'infos sur http://www.howtogeek.com/215485/sign-pdf-documents-without-printing-and-scanning-them-from-any-device/
J'ai trouvé ce script que vous pouvez modifier pour attacher une signature à un file PDF existant.
Vous pouvez également le download depuis cette URL de pastebin:
Il y a aussi ce Q & A sur AskUbuntu qui a beaucoup d'autres methods pour le faire. Le Q & A est intitulé: Comment mettre une image sur un file PDF existant? .
J'ai eu une assez bonne expérience avec uPdf .
sudo add-apt-repository ppa:atareao/updf sudo apt-get update sudo apt-get install -y updf
Corrigez ensuite un bug en éditant 2 lignes dans un script Python .
Lancez uPdf, select l'outil Ajouter une image , dessinez un rectangle autour de la zone où vous voulez que la signature aille et select le file image avec votre signature. Un PNG avec un fond transparent fonctionne mieux.
Il vaut la peine de mentionner Xournal qui a une belle interface user et permet d'append du text, des images et des notes manuscrites aux files PDF. Le seul problème que j'ai eu est qu'il ne semble pas gérer le text des formulaires PDF natifs très bien.
Tout en plaçant mes propres commands de signatures dans un script shell, je cherchais un moyen de sélectionner de façon interactive la zone où la signature devrait se rendre. Heureusement, j'ai trouvé cette question et le script d' Emmanuel Branlard contient l'idée sur la façon de le faire (avec xv
). J'ai implémenté les points suivants:
display
ImageMagicks au lieu de xv
stdbuf -oL
et l'option -update
pour avoir un aperçu en direct pdftk stamp
pour éviter la dégradation de la qualité de l'image gpg
pdftk
wipe
Voici donc le code:
#!/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
Beaucoup de gens recommandnt Xournal, mais je l'ai trouvé comme une version de Gimp que je ne peux pas utiliser. Ainsi, si vous êtes familier avec Gimp, je vous recommand de l'essayer.
Je le fais régulièrement quand je dois signer des documents d'une seule page, et cela me prend plus ou less cinq minutes. Malheureusement cela ne fonctionnera pas si vous avez besoin, par exemple, de signer chaque page d'un document multi-pages. Dans ce dernier cas, je viens d'imprimer, signer et numériser à nouveau!
(J'aurais laissé un commentaire à la réponse updf, mais la politique de stackexchange sur "karma" m'empêche de commenter, mais ne m'empêche pas de laisser une réponse).
updf est vraiment bon pour cela. Ayant utilisé l'aperçu sur MacOS pour «signer» des documents, updf offre l'expérience user la plus proche de cela.
Les travaux suivants sur Ubuntu 14.10 et Debian 8.
Je ne voulais pas append un ppa tierce à mon système, donc j'ai updf en cours d'exécution de la manière suivante:
$ bzr branch lp:updf
puis fait l' édition de 2 lignes comme référencé de l'autre réponse.
Installer les dependencies:
# 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
(ce qui précède était suffisant, mais pas tous les packages peuvent être nécessaires).
et puis le programme python est exécutable sur place:
$ ./src/updf.py
Malheureusement, la qualité peut être sérieusement affectée dans le document de sortie par rapport au document d'input. La bonne façon de le faire serait de superposer la signature, et non de changer l'original, dans un process sans perte. Alors que updf semble s'engager dans le ré-enencoding de l'original.