Linux'ta bir PDF'ye nasıl bir imza .png ekleyebilirim?


65

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:


85

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:

  • Xournal’ı Ubuntu Yazılım Merkezi’nden yükleyin
  • Xournal’ı açın
  • Dosya menüsünden "PDF Notu" nu seçin ve imzalanacak PDF dosyanızı seçin.
  • Araç çubuğundaki "Resim" düğmesini tıklayın (bir insan silüeti gibi görünüyor).
  • Belgeye tıklayın.
  • İmzanızın bir PNG görüntüsünü seçin.
  • Resmi PDF'de yeniden boyutlandırın ve yerleştirin.
  • Dosya menüsünden "PDF'ye Aktar" ı seçin.

Daha fazla bilgi http://www.howtogeek.com/215485/sign-pdf-documents-without-printing-and-scanning-them-from-any-device/


7
Xournal gerçekten çok hastaydı - sonunda imzayı içe aktarmayı ve PDF'yi dışa aktarmayı başardığımda, taranan PDF bulanıktı - imzam, ortaya çıkan pdf'deki tek net öğe idi.
Antti Haapala

1
Bunu sadece xournal ile arch üzerinde yaptım ve gayet iyi çalıştı, fakat arkaplan pdf bir belgeden ibaretti. belki alakalı?
Brandon Kuczenski,

Benim için de Ubuntu 16.04'te çalıştı. Bir yazı tipi olarak, farklı katmanlarda üzerine metin ekleyerek PDF'ye açıklama eklemek için xournal'ı da kullanabilirsiniz (örneğin formları tamamlamak için kullanışlıdır).
jotadepicas

hm. yani bu gerçekten işe yarıyor, ama nane üzerindeki diğer pdf programları metin alanlarını
kaydetmiyor

9

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.


8

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? .


@Freedom_Ben - Ayrıca ilgileniyorsanız, PDF'lerinizi yalnızca PNG yerine sertifikalar kullanarak nasıl imzalayacağımı da buldum. Lmk.
slm

3
Sorun sayfaların görüntülerini çok kötü kalitede yaratmasıdır. : / Diğer cevap (updf hakkında) daha iyi çalışıyor. :)
odinho - Velmont

2
@slm: Çok doğru. Ancak, sadece updf gibi görüntüyü damgalamak yerine, hala bir sayfa / resim / sayfa oluşturur. pdftk ayrıca bu işlemleri yapabilir, ancak burada olduğu gibi bir sürücü betiğine ihtiyaç duyar.
odinho - Velmont

1
Daha önce benzer şeyler yapmak için pdftk ve reportlab kullandım (pdf'in üstüne birleştirme): stackoverflow.com/questions/356502/… - etkili bir yol bulmak için çok çaba sarf ettim . PDF'leri işlemek için çok fazla kötü yol var.
odinho - Velmont

2
Bunun kullanmayan bir sürümü var mı xv? Yüklemek çok zor xvve ücretsiz bir yazılım değil ...
Chris Beck

8

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.

  • İmzalı bir dosyaya (telefon veya web kamerasıyla çekilmiş bir resim bile) ve imzalanacak belgeye sahip bir dosyaya sahip olmalısınız. Sonuncusu, Gimp tarafından açılabilen PDF formatında olacak.
  • Beyaz yeterince beyaz değilse imzaya bir eşik uygulayın
  • Belgenin arka planı beyaz değilse imzada beyazı alfaya dönüştür
  • Belgeyi Gimp ile açın.
  • Belgenin üstündeki imzayı yeni katman olarak açın (Dosya -> Katman olarak aç)
  • Boyut ve pozisyonu ayarlayın
  • Katmanları birleştirmek
  • PDF olarak dışa aktar

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!


2
Yukarıdaki tüm çözümleri denedim, hepsi çok çaba harcadıktan sonra başarısız oldu. xournalgerç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. xvderlemedi, 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!
Chris Beck

2
Bu güzel bir çözüm! İmzayı saydam bir arka planla oluşturmak ve belgeye katman olarak eklendiğinde görüntüyü ölçeklendirmek için bazı görüntü düzenleme becerileri gerekir. BTW, tarih, çalışma XCF dosyasına biraz yaygara içeren bir katman olarak da eklenebilir (metin boyutu ve konumu). Çıkan PDF dışa aktarımı oldukça kabul edilebilir!
Tom Russell,

1
Belge birden fazla sayfa içeriyorsa: sayfayı katman olarak içe aktar (varsayılan seçenek), belgeyi ".mng" olarak kaydedin (yalnızca birden fazla png anlamına gelir), sadece .mng uzantıları ekleyerek ve "dışa aktar" seçeneğini gimp komutuna ekleyin ve komut satırına gidin. : 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.
Diego Andrés Díaz Espinoza


6

PDF ile oldukça iyi bir deneyim yaşadım .

Kurulum

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 .

kullanım

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.


4
lol, bu Python 2 satır düzenleme hakkında çok komik. Çünkü bu yorumu yapan benim. Ve ben burada yine bir PDF imzalamak için bir yol arıyorum, intarwebs yararlı insanlar hakkında çok mutlu :)
odinho - Velmont

Son sürüm Ubuntu Quantal içindi.
Repoyu

@Wallacoloo Paket sadece Raring and Saucy için üretildi. Diğer dağıtımlar için, içinde lstoluşturulan dosyadaki dağıtımı el ile değiştirmeniz gerekir /etc/apt/sources.list.d.
kynan

Precise veya Quantal dağılımlarını kullanarak Wily 15.10'daki açılış ekranındaki çarpışmalar.
Jonathan Neufeld

Debian Buster'da benim için çalışıyor. Özel komut dosyaları gibi diğer yanıtlar, şu anda kullanılamayan pdftk'yi kullanır ve Xournal depolarda değildir. Updf indirme sayfası veya direkt indirme linki . sudo dpkg -i file.deb; sudo apt install -fPython kodunu yükleyin ve cevapta belirtildiği gibi düzenleyin.
Luc,

4

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:

  • displayyerine ImageMagicks kullanınxv
  • kullanmak stdbuf -oLve -updateopsiyon canlı önizleme yapmak
  • pdftk stampgörüntü kalitesinin düşmesini önlemek için imzayı kaplamak
  • sadece pdf dosyasındaki belirli sayfayı çıkart
  • imzanın şifresini çözmek gpg
  • İmzalı pdf dosyasını şifrelemek pdftk
  • imzayı içeren ara dosyaları temizleme 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

Bu benim için çalışmıyor, imagamagick yükler ancak sadece açılış ekranını görüntüler.
Andreas,

2

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:

  • Xournal pdf ile uğraşıyor (kaynağından inşa ettikten sonra çalışmak gibiydi)
  • SignPDF betiği pdfs'i görüntülere dönüştürür ve kaliteyi önemli ölçüde azaltır. Aynı zamanda sıkıntılı bir bağımlılığa sahiptir (xv)
  • Ben deneyin vermedi gimp ve updf seçeneği
  • Sonunda, çeşitli formları doldurmam gerektiğinden, VM'de Acrobat Reader kullandım

Geri paylaştığın için teşekkürler. Senaryonuzu kontrol edeceğim. Xournal ile gerçekten iyi bir başarı elde ettim, sorunlara yol açabileceğinden orijinal dosya adına dışa aktarmadığınızdan emin olmalısınız. Dışa aktarılacak yeni bir ad alırsanız (orijinal pdf'nin üzerine yazmazsınız), o zaman bu hatadan kaçınırsınız.
Freedom_Ben

1

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.


0

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 .
Joma

Joma: teşekkürler; Şimdi listeye python-gi-cairo ekledim.
projix,

0

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.