Wie kann ich einer PDF-Datei unter Linux eine Signatur-PNG hinzufügen?

65

Ich habe eine gescannte Kopie meiner schriftlichen Signatur und muss sie auf einige Dokumente im Signaturblock anwenden. Früher habe ich das immer unter Windows gemacht, jetzt habe ich nur noch Linux.

Ist das möglich? Wie kann ich einer PDF-Datei unter Linux (Gnome 3) ein Signaturbild hinzufügen?

Freedom_Ben
quelle

Antworten:

85

Mit Xournal können Sie PDFs mit Anmerkungen versehen und benutzerdefinierte Bilder hinzufügen (z. B. ein transparentes PNG). Es wird zwar zum Erstellen von Freihandnotizen und zum Zeichnen verwendet, kann jedoch auch PDF-Dateien mit Anmerkungen versehen.

Auf Ubuntu:

  • Installieren Sie Xournal über das Ubuntu Software Center
  • Öffnen Sie Xournal
  • Wählen Sie im Menü "Datei" die Option "PDF mit Anmerkungen versehen" und wählen Sie die zu signierende PDF-Datei aus.
  • Klicken Sie auf die Schaltfläche "Bild" in der Symbolleiste (es sieht aus wie eine Silhouette einer Person).
  • Klicken Sie auf Dokument.
  • Wählen Sie ein PNG-Bild Ihrer Signatur.
  • Ändern Sie die Größe und positionieren Sie das Bild in der PDF-Datei.
  • Wählen Sie im Menü "Datei" die Option "Als PDF exportieren".

Weitere Informationen unter http://www.howtogeek.com/215485/sign-pdf-documents-without-printing-and-scanning-them-from-any-device/

Nate Lampton
quelle
7
Xournal war wirklich fehlerhaft - als es mir endlich gelang, die Signatur zu importieren und die PDF-Datei zu exportieren, war die gescannte PDF-Datei unscharf - meine Signatur war das einzige klare Element in der resultierenden PDF-Datei.
Antti Haapala
1
Ich habe das gerade mit xournal on arch gemacht und es hat ganz gut funktioniert, aber das Hintergrund-PDF stammte von einem Dokument, nicht von einem Scan. vielleicht relevant?
Brandon Kuczenski
Arbeitete auch für mich auf Ubuntu 16.04. Als Randnotiz können Sie auch xournal verwenden, um die PDF-Datei mit Anmerkungen zu versehen, indem Sie Text in verschiedenen Ebenen darüber einfügen (nützlich zum Beispiel zum Ausfüllen von Formularen).
Jotadepicas
Hm. Das funktioniert eigentlich, aber andere PDF-Programme auf Minze speichern keine Textfelder ...
Mendota
9

Erwähnenswert ist Xournal, das eine schöne Benutzeroberfläche hat und das Hinzufügen von Text, Bildern und handgeschriebenen Notizen zu PDF-Dateien ermöglicht. Das einzige Problem, das ich hatte, ist, dass es nicht sehr gut mit Text aus nativen PDF-Formularen umgehen kann.

Mike Chelen
quelle
8

Ich habe dieses Skript gefunden, das Sie ändern können, um eine Signatur an eine vorhandene PDF-Datei anzuhängen.

Sie können es auch von dieser Pastebin-URL herunterladen:

Es gibt auch diese Fragen und Antworten auf AskUbuntu, für die es viele andere Methoden gibt. Die Fragen und Antworten lauten: Wie wird ein Bild in eine vorhandene PDF-Datei eingefügt? .

slm
quelle
@Freedom_Ben - auch wenn Sie interessiert sind, habe ich herausgefunden, wie Sie Ihre PDFs mit Zertifikaten anstelle von PNGs signieren können. LMK.
SLM
3
Das Problem ist, dass Bilder der Seiten in sehr schlechter Qualität erstellt werden. : / Die andere Antwort (über updf) funktioniert besser. :)
odinho - Velmont
2
@slm: Sehr wahr. Aber es wird immer noch ein / Bild / der Seite erstellt, anstatt das Bild nur auf zu stempeln, wie dies bei updf der Fall ist. pdftk kann solche Operationen auch ausführen, benötigt aber ein Treiberskript wie das hier.
Odinho - Velmont
1
Ich habe zuvor mit pdftk und reportlab ähnliche Vorgänge durchgeführt (Seriendruck über PDF): stackoverflow.com/questions/356502/… - habe viel Mühe darauf verwendet, einen effektiven Weg zu finden. Sehr viele schlechte Möglichkeiten, PDFs zu verarbeiten.
Odinho - Velmont
2
Gibt es eine Version davon, die nicht verwendet wird xv? Es ist zu schwierig zu installieren xvund es ist keine freie Software ...
Chris Beck
8

Viele Leute empfehlen Xournal, aber ich fand es als eine Version von Gimp, die ich nicht benutzen kann. Wenn Sie mit Gimp vertraut sind, würde ich empfehlen, es zu versuchen.

  • Sie sollten eine Datei mit der Signatur (sogar ein mit dem Telefon oder der Webcam aufgenommenes Bild) und eine Datei mit dem zu signierenden Dokument haben. Letzteres wird im PDF-Format vorliegen, das von Gimp geöffnet werden kann
  • Wenden Sie einen Schwellenwert auf die Signatur an, wenn das Weiß nicht weiß genug ist
  • Konvertieren Sie Weiß in Alpha in der Signatur, wenn der Hintergrund des Dokuments nicht weiß ist
  • Öffnen Sie das Dokument mit Gimp
  • Öffne die Signatur über dem Dokument als neue Ebene (Datei -> Öffnen als Ebene)
  • Passen Sie Größe und Position an
  • Ebenen zusammenführen
  • Als PDF exportieren

Ich mache das regelmäßig, wenn ich einseitige Dokumente signieren muss, und es dauert ungefähr fünf Minuten. Leider funktioniert dies nicht, wenn Sie beispielsweise jede Seite eines mehrseitigen Dokuments signieren müssen. Im letzteren Fall drucke, unterschreibe und scanne ich einfach noch einmal!

Danza
quelle
2
Ich habe alle oben genannten Lösungen ausprobiert, alle sind nach viel Mühe gescheitert. xournalfunktioniert nicht richtig, es scheint Fehler in der Benutzeroberfläche zu geben und ich konnte die Bilder nach dem Importieren nicht skalieren oder verschieben. xvhat nicht kompiliert, benötigt zahlreiche Patches für C-Code, funktioniert dann aber auch nicht. updf, oder sein Ubuntu PPA, existiert nicht mehr afaict. (getestet am ubuntu xenial dec 2016) gimpist der richtige Weg, danke dafür!
Chris Beck
2
Das ist eine schöne Lösung! Es sind einige Bildbearbeitungsfähigkeiten erforderlich, um die Signatur mit einem transparenten Hintergrund zu erstellen und das Bild zu skalieren, wenn es als Ebene zum Dokument hinzugefügt wird. Übrigens kann das Datum auch mit ein wenig Aufwand (Textgröße und Speicherort) als Ebene zur XCF-Arbeitsdatei hinzugefügt werden. Der resultierende PDF-Export ist durchaus akzeptabel!
Tom Russell
1
Wenn das Dokument mehrere Seiten hat: Importiere Seite als Ebenen (Standardoption), speichere das Dokument als ".mng" (bedeutet mehrere PNG), füge einfach die .mng-Erweiterungen hinzu und exportiere als Option auf gimp : convert original_name.mng output_name.pdf. Das ist alles. Übrigens, wenn die Auflösung für die Ausgabe niedrig ist, versuchen Sie, die Größe der PDF-Bilder zu vergrößern, während Sie die PDF-Datei am Anfang importieren: Versuchen Sie es mit "2000" für die Breite. Vergessen Sie beim Export nach MNG nicht, die Option "Komprimierungsstufe" auf das Maximum zu setzen, damit die endgültige Datei nicht zu schwer wird.
Diego Andrés Díaz Espinoza
Diese Antwort zusammen mit dieser ( onlinesignature.com/es/draw-a-signature-online ) ist alles, was Sie brauchen
Alfergon
6

Ich habe einigermaßen gute Erfahrungen mit uPdf gemacht .

Installation

sudo add-apt-repository ppa:atareao/updf
sudo apt-get update
sudo apt-get install -y updf

Beheben Sie dann einen Fehler, indem Sie 2 Zeilen in einem Python-Skript bearbeiten .

Verwendungszweck

Starten Sie uPdf, wählen Sie das Werkzeug Bild hinzufügen, zeichnen Sie ein Rechteck um den Bereich, in den die Signatur eingefügt werden soll, und wählen Sie die Bilddatei mit Ihrer Signatur aus. Ein PNG mit transparentem Hintergrund funktioniert am besten.

kynan
quelle
4
lol, das ist so lustig, wenn man 2 Zeilen von Python bearbeitet. Weil ich derjenige bin, der diesen Kommentar erstellt hat. Und hier bin ich auf der Suche nach einer Möglichkeit, ein PDF erneut zu signieren. Ich freue mich sehr über hilfreiche Personen in den Intranet-Netzwerken :)
odinho - Velmont
Die letzte Veröffentlichung war anscheinend für Ubuntu Quantal. Hinzufügen der Repo am 15.04 (Vivid) Fehler mit "Fehler beim Abrufen ..."
Ponkadoodle
@Wallacoloo Das Paket wurde nur für Raring und Saucy entwickelt. Für jede andere Distribution müssen Sie die Distribution in der in lsterstellten Datei manuell ändern /etc/apt/sources.list.d.
Kynan
Abstürze nach Begrüßungsbildschirm unter Wily 15.10 mit Precise- oder Quantal-Verteilungen.
Jonathan Neufeld
Funktioniert für mich mit Debian Buster. Andere Antworten wie die benutzerdefinierten Skripte verwenden pdftk, das derzeit nicht verfügbar ist, und Xournal befindet sich nicht in den Repositorys. Updf- Download-Seite oder direkter Download-Link . Installieren Sie mit sudo dpkg -i file.deb; sudo apt install -fund bearbeiten Sie dann den Python-Code wie in der Antwort erwähnt.
Luc
4

Während ich meine eigenen Signaturbefehle in ein Shell-Skript einbaute, suchte ich nach einer Möglichkeit, interaktiv den Bereich auszuwählen, in dem die Signatur gespeichert werden soll. Zum Glück habe ich diese Frage gefunden und das Skript von Emmanuel Branlard enthält die Idee, wie man es macht (mit xv). Ich habe folgende Punkte umgesetzt:

  • Verwenden Sie ImageMagicks displayanstelle vonxv
  • Verwenden Sie stdbuf -oLund die -updateOption, um eine Live-Vorschau zu haben
  • Überlagern Sie die Signatur mit pdftk stamp, um eine Verschlechterung der Bildqualität zu verhindern
  • extrahieren Sie nur die bestimmte Seite aus der PDF-Datei
  • entschlüsseln sie die signatur mit gpg
  • verschlüsseln Sie die signierte pdf-Datei mit pdftk
  • Bereinigen von Zwischendateien mit der Signatur mit wipe

Also hier ist der 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
Bodo
quelle
Das funktioniert bei mir nicht, imagamagick lädt aber nur den Splash-Screen.
Andreas
2

Der Vollständigkeit halber gibt es dazu ein alternatives Skript, das das PDF im Gegensatz zu dem bisher genannten nicht in ein (minderwertiges) Bild konvertiert : https://github.com/martinruenz/signpdf

Meine Erfahrung mit den anderen Lösungen war:

  • Xournal hat das PDF durcheinander gebracht (es schien jedoch nach dem Erstellen aus dem Quellcode zu funktionieren)
  • Das Skript SignPDF konvertiert pdfs in Bilder und reduziert die Qualität erheblich. Es hat auch eine störende Abhängigkeit (xv)
  • Ich versuche nicht , die Gimp und updf Option
  • Am Ende habe ich Acrobat Reader in einer VM verwendet, da ich auch verschiedene Formulare ausfüllen musste
Martin R.
quelle
Vielen Dank für die Rückmeldung. Ich werde Ihr Skript überprüfen. Ich hatte wirklich gute Erfolge mit Xournal, aber Sie müssen sicherstellen, dass Sie nicht in den ursprünglichen Dateinamen exportieren, da dies zu Problemen führen kann. Wenn Sie einen neuen Namen für den Export auswählen (damit das Original-PDF nicht überschrieben wird), vermeiden Sie diesen Fehler.
Freedom_Ben
1

Okular PDF-Viewer verfügt über diese integrierte mit Anmerkungen. Öffnen Sie die PDF-Datei, die Sie signieren möchten, und wählen Sie in der Leiste links die Option Rezensionen aus. Wählen Sie im Popup-Menü die dritte Option mit der Aufschrift Freihandlinie aus. Zeichnen Sie Ihre Unterschrift. Wenn Sie möchten, dass die Tinte schwarz und nicht neongrün ist, wählen Sie "Einstellungen" aus dem Menü, "Okular konfigurieren" und "Anmerkungen" auf der linken Seite. Wählen Sie "Freihandlinie" aus den Optionen aus und klicken Sie dann auf die Schaltfläche "Bearbeiten". Hier können Sie sowohl die Strichstärke als auch die Farbe einstellen. Klicken Sie auf Übernehmen und genießen Sie.

Christian
quelle
0

Dafür ist updf wirklich gut. Nachdem updf preview unter MacOS zum "Signieren" von Dokumenten verwendet hat, bietet es die beste Benutzererfahrung.

Das Folgende funktioniert unter Ubuntu 14.10 und Debian 8.

Ich wollte meinem System kein ppa von Drittanbietern hinzufügen, daher wurde updf stattdessen folgendermaßen ausgeführt:

$ bzr branch lp:updf

dann machte die 2-zeilige Bearbeitung wie von der anderen Antwort verwiesen.

Abhängigkeiten installieren:

# 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

(das oben Genannte war ausreichend; möglicherweise ist jedoch nicht jedes Paket erforderlich).

und dann kann das Python-Programm direkt ausgeführt werden:

$ ./src/updf.py

Leider kann die Qualität des Ausgabedokuments im Vergleich zum Eingabedokument erheblich beeinträchtigt werden. Der richtige Weg, dies zu tun, wäre, die Signatur in einem verlustfreien Prozess zu überlagern und nicht das Original zu ändern. Während updf anscheinend das Original neu codiert.

projix
quelle
Ich musste python-gi-cairodie Abhängigkeiten ergänzen , damit es funktioniert.
Joma
Joma: danke; Ich habe jetzt python-gi-cairo zur Liste hinzugefügt.
Projix
0

Ich betreibe ein Unternehmen und Xournal hat nicht die Qualität oder Breite der Kontrolle über PDF-Dateien, die ich benötige.

Ich verwende oder wende auch ständig digitale Signaturen an.

Master PDF Editor (Version 5 ab diesem Datum) ist eine kostenpflichtige Anwendung, die die Erwartungen leicht übertrifft und jetzt mein Standard-PDF-Reader für Ubuntu ist. Hauptmerkmal: - Unterzeichnen von Dokumenten - Ausfüllen von Formularen - Ändern von Text und Objekten - Kommentieren und Hervorheben von Dokumenten - Zusammenführen und Teilen von PDF - Dateien - etc

Weitere Informationen finden Sie unter: https://code-industry.net/masterpdfeditor/?-about&ver=5438

Brad Horn
quelle