Yazılı imzamın taranmış bir kopyasını aldım ve imza bloğundaki bazı belgelere uygulamam gerekiyor. Bunu her zaman Windows'ta yapardım ama şimdi sadece Linux'um var.
Mümkün mü? Linux'ta bir PDF dosyasına nasıl imza görüntüsü ekleyebilirim (Gnome 3)?
Yazılı imzamın taranmış bir kopyasını aldım ve imza bloğundaki bazı belgelere uygulamam gerekiyor. Bunu her zaman Windows'ta yapardım ama şimdi sadece Linux'um var.
Mümkün mü? Linux'ta bir PDF dosyasına nasıl imza görüntüsü ekleyebilirim (Gnome 3)?
Yanıtlar:
Xournal'ı kullanarak PDF'leri ekleyebilir ve özel görüntüler ekleyebilirsiniz (örneğin saydam bir PNG). Serbest el notları almak ve çizim yapmak için kullanılmasına rağmen, PDF'leri de açıklayabilir.
Ubuntu'da:
Daha fazla bilgi http://www.howtogeek.com/215485/sign-pdf-documents-without-printing-and-scanning-them-from-any-device/
Güzel bir kullanıcı arayüzü olan ve PDF dosyalarına metin, resim ve elle yazılmış notlar eklemeye izin veren Xournal'dan bahsetmek faydalıdır . Sahip olduğum tek sorun, yerel PDF formlarından gelen metni çok iyi ele alması gibi görünmüyor.
Mevcut bir PDF dosyasına imza eklemek için değiştirebileceğiniz bu betiği buldum.
Ayrıca bu pastebin URL'sinden indirebilirsiniz:
Bunu yapmak için birçok başka yöntemi olan AskUbuntu'da da bu soru ve cevap var. Sorular ve Cevaplar başlıklı: Mevcut bir pdf dosyasına resim nasıl yerleştirilir? .
xv
? Yüklemek çok zor xv
ve ücretsiz bir yazılım değil ...
Birçok insan Xournal'ı önerir, ancak onu kullanamayacağım bir Gimp sürümü olarak çalışırken buldum. Bu yüzden Gimp'e aşina iseniz, denemenizi tavsiye ederim.
Tek sayfa belgeleri imzalamam gerektiğinde bunu düzenli olarak yapıyorum ve bu işlem beş dakikadan az ya da çok zaman alıyor. Örneğin, çok sayfalı bir belgenin her sayfasını imzalamanız gerekirse, bu işe yaramaz. İkinci durumda sadece tekrar yazdırdım, imzaladım ve taradım!
xournal
gerçekten düzgün çalışmıyor, kullanıcı arayüzünde hatalar var gibi görünüyor ve görüntüleri içe aktardıktan sonra ölçekleyemiyor veya taşıyamıyordum. xv
derlemedi, C koduna kadar sayısız yamayı gerektiriyor, sonra sonunda da çalışmıyor. updf
, veya ubuntu PPA'sı, artık hiçbir şekilde eksik değildir. (ubuntu xenial dec 2016'da test edildi) gimp
, bunun için teşekkürler!
convert original_name.mng output_name.pdf
. Bu kadar. Bu arada, çıktı için çözünürlük düşükse, pdf'i başlangıçta içe aktarırken pdf resimlerinin boyutunu büyütmeyi deneyin: genişlik için "2000" gibi bir şey deneyin. MNG'ye dışa aktarırken "sıkıştırma seviyesi" seçeneğini kontrol etmeyi unutmayın; bu şekilde son dosya çok ağır olmayacaktır.
PDF ile oldukça iyi bir deneyim yaşadım .
sudo add-apt-repository ppa:atareao/updf
sudo apt-get update
sudo apt-get install -y updf
Sonra düzeltmek hata ile Python komut içinde 2 satırları düzenleme .
UPdf'yi başlatın, Resim ekle aracını seçin, imzanın gitmesini istediğiniz alanın çevresine bir dikdörtgen çizin ve imzanızla resim dosyasını seçin. Saydam bir arka plana sahip bir PNG en iyisidir.
lst
oluşturulan dosyadaki dağıtımı el ile değiştirmeniz gerekir /etc/apt/sources.list.d
.
sudo dpkg -i file.deb; sudo apt install -f
Python kodunu yükleyin ve cevapta belirtildiği gibi düzenleyin.
Kendi imza komutlarımı bir kabuk betiğine koyarken, imzanın gitmesi gereken alanı etkileşimli olarak seçmenin bir yolunu arıyordum. Neyse ki bu soruyu buldum ve Emmanuel Branlard'ın senaryosu nasıl yapılacağına dair bir fikir içeriyor xv
. Aşağıdaki noktaları uyguladım:
display
yerine ImageMagicks kullanınxv
stdbuf -oL
ve -update
opsiyon canlı önizleme yapmakpdftk stamp
görüntü kalitesinin düşmesini önlemek için imzayı kaplamakgpg
pdftk
wipe
Yani kod burada:
#!/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
Tamamlanması için, bunu yapmak için alternatif bir komut dosyası var, pdf'i şu ana kadar belirtilmiş olanın aksine (düşük kaliteli) bir resme dönüştüremiyor : https://github.com/martinruenz/signpdf
Diğer çözümler ile olan deneyimim:
Okular PDF görüntüleyicide bu açıklamalar var. İmzalamak istediğiniz PDF'yi açın, soldaki çubuktan yorumları seçin, açılır menüde 'freehand line' yazan üçüncü seçeneği seçin. İmzanızı çıkarın. Neon yeşili yerine siyah mürekkep istiyorsanız, menüden 'Ayarlar'ı seçin,' Oküler'i Yapılandır'ı seçin, soldaki 'Ek Açıklamalar'ı seçin. Seçeneklerden 'Freehand Line' seçeneğini seçin, ardından 'Edit' düğmesini seçin. Hem çizgi kalınlığını hem de rengini buradan ayarlayabilirsiniz. Uygula ve keyfini çıkar.
updf bunun için gerçekten iyidir. MacOS'ta önizleme belgelerini "imzalamak" için kullanan updf, buna en yakın kullanıcı deneyimini sunar.
Aşağıdakiler Ubuntu 14.10 ve Debian 8'de çalışmaktadır.
Sistemime bir üçüncü parti ppa eklemek istemedim, bu yüzden aşağıdaki şekilde çalışıyordum:
$ bzr branch lp:updf
daha sonra 2 satır düzenlemeyi diğer cevaptan referansta bulunularak yaptı.
Bağımlılıkları yükle:
# 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
(Yukarıdakiler yeterliydi; her paket gerekli olmayabilir).
ve sonra python programı yerinde çalıştırılabilir:
$ ./src/updf.py
Maalesef, kalite, çıktı belgesindeki girdi belgesine kıyasla ciddi şekilde etkilenebilir. Bunu yapmanın doğru yolu, kayıpsız bir süreçte imzanın üstünü örtmek ve orijinalini değiştirmemek olacaktır. Oysa updf, orijinalin yeniden kodlanması ile meşgul gibi görünüyor.
python-gi-cairo
Çalışması için bağımlılıkları eklemek zorunda kaldım .
Bir işletmeyi işletiyorum ve Xournal, ihtiyacım olan pdf dosyaları üzerindeki kontrolün kalitesine veya genişliğine sahip değil.
Ayrıca her zaman dijital imza kullanıyorum veya uyguluyorum.
Master PDF Editor (bu tarihten itibaren 5. sürüm) beklentileri kolayca aşan ücretli bir uygulamadır ve şimdi Ubuntu için varsayılan pdf okuyucum. Anahtar özellik: - belgeleri imzala - formları doldur - metin ve nesneleri değiştir - belgeleri notlandır ve vurgula - pdf dosyalarını birleştirme ve bölme - vb
Daha fazla ayrıntı için: https://code-industry.net/masterpdfeditor/?-about&ver=5438