Jak mogę dodać podpis .png do pliku PDF w systemie Linux?
65
Mam zeskanowaną kopię podpisu i muszę go zastosować do niektórych dokumentów w bloku podpisu. Robiłem to cały czas w systemie Windows, ale teraz mam tylko Linuksa.
czy to możliwe? Jak mogę dodać obraz podpisu do pliku PDF w systemie Linux (Gnome 3)?
Za pomocą Xournal możesz dodawać adnotacje do plików PDF i dodawać własne obrazy (np. Przezroczysty PNG). Chociaż służy do robienia notatek i rysowania odręcznego, może także dodawać adnotacje do plików PDF.
W systemie Ubuntu:
Zainstaluj Xournal za pośrednictwem Centrum oprogramowania Ubuntu
Otwórz Xournal
Wybierz „Adnotuj PDF” z menu Plik i wybierz plik PDF do podpisania.
Kliknij przycisk „Obraz” na pasku narzędzi (wygląda jak sylwetka osoby).
Xournal był naprawdę wadliwy - kiedy w końcu udało mi się zaimportować podpis i wyeksportować plik PDF, zeskanowany plik PDF został zamazany - mój podpis był jedynym wyraźnym elementem na wynikowym pliku PDF.
Pracowałem także dla Ubuntu 16.04. Jako sidenote możesz także użyć xournal do dodania adnotacji do pliku PDF poprzez dodanie tekstu na nim na różnych warstwach (przydatne na przykład do wypełniania formularzy).
Warto wspomnieć o Xournal, który ma ładny interfejs użytkownika i umożliwia dodawanie tekstu, obrazów i odręcznych notatek do plików PDF. Jedynym problemem, jaki miałem, jest to, że nie radzi sobie z tekstem z rodzimych formularzy PDF.
@slm: Bardzo prawda. Ale nadal tworzy / obraz / strony, zamiast tylko stemplować obraz na tak, jak robi to updf. pdftk jest również w stanie wykonywać takie operacje, ale potrzebuje skryptu sterownika, takiego jak tutaj.
Korzystałem już z pdftk i reportlab, aby robić podobne rzeczy (scalanie poczty na górze pdf): stackoverflow.com/questions/356502/... - wiele wysiłku szukałem skutecznego sposobu. Istnieje wiele złych sposobów przetwarzania plików PDF.
Wiele osób poleca Xournal, ale okazało się, że działa jako wersja Gimp, której nie mogę używać. Dlatego jeśli znasz Gimp, polecam wypróbowanie go.
Powinieneś mieć plik z podpisem (nawet zdjęcie zrobione telefonem lub kamerą internetową) oraz plik z dokumentem do podpisania. Ten ostatni będzie w formacie PDF, który może otworzyć Gimp
Zastosuj próg podpisu, jeśli biel nie jest wystarczająco biała
Konwertuj kolor biały na alfa w podpisie, jeśli tło dokumentu nie jest białe
Otwórz dokument za pomocą Gimp
Otwórz podpis na górze dokumentu jako nową warstwę (Plik -> Otwórz jako warstwę)
Dostosuj rozmiar i pozycję
Scal warstwy
Eksportuj jako plik PDF
Robię to regularnie, gdy muszę podpisywać jednostronicowe dokumenty, co zajmuje mi mniej więcej pięć minut. Niestety to nie zadziała, jeśli chcesz na przykład podpisać każdą stronę dokumentu wielostronicowego. W tym drugim przypadku po prostu drukuję, podpisuję i skanuję ponownie!
Wypróbowałem wszystkie powyższe rozwiązania, wszystkie zawiodły po dużym wysiłku. xournaltak naprawdę nie działa poprawnie, wydaje się, że w interfejsie użytkownika występują błędy i nie mogłem skalować ani przenosić obrazów po ich zaimportowaniu. xvnie skompilował się, wymaga wielu poprawek do kodu C, potem też nie działa. updflub jego ubuntu PPA, już nie istnieje. (testowane na Xenial Ubuntu w grudniu 2016 r.) gimpto droga, dzięki za to!
To jest piękne rozwiązanie! Wymaga to pewnych umiejętności edycji obrazu, aby utworzyć podpis z przezroczystym tłem i skalować obraz po dodaniu do dokumentu jako warstwy. BTW, datę można również dodać do działającego pliku XCF jako warstwę z odrobiną zamieszania (rozmiar i lokalizacja tekstu). Wynikowy eksport pliku PDF jest całkiem do przyjęcia!
Jeśli dokument ma wiele stron: zaimportuj stronę jako warstwy (opcja domyślna), zapisz dokument jako „.mng” (oznacza wiele png), po prostu dodając rozszerzenia .mng i opcję „eksportuj jako” na gimp, teraz przejdź do wiersza poleceń i wykonaj : convert original_name.mng output_name.pdf. To wszystko. Nawiasem mówiąc, jeśli rozdzielczość wyjściowa jest niska, spróbuj powiększyć obraz pdf podczas importowania pdf na początku: spróbuj czegoś takiego jak „2000” dla szerokości. Podczas eksportowania do MNG nie zapomnij zaznaczyć opcji „poziom kompresji” do maksimum, dzięki czemu plik końcowy nie będzie zbyt ciężki.
Uruchom plik uPdf, wybierz narzędzie Dodaj obraz , narysuj prostokąt wokół obszaru, w którym ma się znaleźć podpis, i wybierz plik obrazu ze swoim podpisem. PNG z przezroczystym tłem działa najlepiej.
lol, to zabawne w edytowaniu 2 linii Pythona. Ponieważ to ja stworzyłem ten komentarz. I tutaj szukam sposobu na ponowne podpisanie pliku PDF, więc cieszę się z pomocy pomocnych osób na stronach internetowych :)
@Wallacoloo Pakiet jest zbudowany tylko dla Raring i Saucy. W przypadku każdej innej dystrybucji musisz ręcznie zmienić dystrybucję w lstpliku utworzonym w /etc/apt/sources.list.d.
Działa dla mnie w Debian Buster. Inne odpowiedzi, takie jak skrypty niestandardowe, używają pdftk, który jest obecnie niedostępny, a Xournal nie znajduje się w repozytoriach. Strona pobierania aktualizacji lub bezpośredni link do pobrania . Zainstaluj za pomocą, sudo dpkg -i file.deb; sudo apt install -fa następnie edytuj kod Python, jak wspomniano w odpowiedzi.
Umieszczając własne polecenia podpisu w skrypcie powłoki, szukałem sposobu interaktywnego wyboru obszaru, w którym powinien się znaleźć podpis. Na szczęście znalazłem to pytanie, a scenariusz Emmanuela Branlarda zawiera pomysł, jak to zrobić (z xv). Zaimplementowałem następujące punkty:
użyj ImageMagicks displayzamiastxv
użyj stdbuf -oLi -updateopcji, aby mieć podgląd na żywo
nakładaj podpis, pdftk stampaby zapobiec pogorszeniu jakości obrazu
wyodrębnij tylko określoną stronę z pliku pdf
odszyfruj podpis za pomocą gpg
zaszyfruj podpisany plik pdf za pomocą pdftk
oczyść pliki pośrednie zawierające podpis wipe
Oto kod:
#!/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 defaultif[-z "$page"];then page=$pagecount;fifunction 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=(00)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];fiif(( 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
fidoneif[-z "$p"]then
echo "You have to click two times. Aborting..."
exit 1fi
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
Dzięki za udostępnienie. Sprawdzę twój skrypt. Miałem naprawdę dobry sukces z Xournalem, musisz jednak upewnić się, że nie eksportujesz do oryginalnej nazwy pliku, ponieważ może to powodować problemy. Jeśli wybierzesz nową nazwę do eksportu (aby nie zastąpić oryginalnego pliku pdf), unikniesz tego błędu.
Przeglądarka PDF Okular ma to wbudowane z adnotacjami. Otwórz plik PDF, który chcesz podpisać, wybierz recenzje na pasku po lewej stronie, wybierz trzecią opcję w menu podręcznym z napisem „linia odręczna”. Wyciągnij swój podpis. Jeśli chcesz czarny atrament, a nie zielony neon, wybierz z menu „Ustawienia”, wybierz „Konfiguruj Okulara” i przycisk „Adnotacje” po lewej stronie. Wybierz opcję „Linia odręczna” z opcji, a następnie przycisk „Edytuj”. Tutaj możesz dostosować zarówno grubość, jak i kolor linii. Kliknij Zastosuj i ciesz się.
updf jest do tego naprawdę dobry. Po skorzystaniu z podglądu w systemie MacOS do „podpisywania” dokumentów, updf zapewnia użytkownikom jak najlepsze wrażenia.
Poniższe działa na Ubuntu 14.10 i Debian 8.
Nie chciałem dodawać ppa innej firmy do mojego systemu, więc zamiast tego uruchomiłem aktualizację w następujący sposób:
(powyższe było wystarczające; jednak nie każde opakowanie może być konieczne).
a następnie program python można uruchomić w miejscu:
$ ./src/updf.py
Niestety jakość dokumentu wyjściowego może ulec poważnemu pogorszeniu w porównaniu do dokumentu wejściowego. Właściwym sposobem na to byłoby nałożenie podpisu, a nie zmiana oryginału, w bezstratnym procesie. Wydaje się, że updf angażuje się w ponowne kodowanie oryginału.
Prowadzę firmę i Xournal nie ma jakości ani kontroli nad plikami pdf, których potrzebuję.
Cały czas używam lub stosuję podpisy cyfrowe.
Master PDF Editor (wersja 5 od tej daty) to płatna aplikacja, która z łatwością przekracza oczekiwania i jest teraz moim domyślnym czytnikiem pdf dla Ubuntu. Kluczowa cecha: - podpisywanie dokumentów - wypełnianie formularzy - modyfikowanie tekstu i obiektów - dodawanie adnotacji i wyróżnianie dokumentów - scalanie i dzielenie plików pdf - itp
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.