web-dev-qa-db-ja.com

LinuxでPDFに署名.pngを追加するにはどうすればよいですか?

筆記された署名のスキャンされたコピーがあり、署名ブロックの一部のドキュメントにそれを適用する必要があります。以前は常にWindowsでこれを行っていましたが、現在はLinuxしかありません。

これは可能ですか? Linux(Gnome 3)でPDFファイルに署名イメージを追加するにはどうすればよいですか?

88
Freedom_Ben

Xournalを使用すると、PDFに注釈を付けたり、カスタム画像(透明なPNGなど)を追加したりできます。フリーハンドでのメモや描画に使用されますが、PDFに注釈を付けることもできます。

Ubuntuの場合:

  • UbuntuソフトウェアセンターからXournalをインストールする
  • Xournalを開く
  • [ファイル]メニューから[PDFに注釈を付ける]を選択し、署名するPDFファイルを選択します。
  • ツールバーの「画像」ボタンをクリックします(人物のシルエットのように見えます)。
  • ドキュメントをクリックします。ファイルブラウザダイアログが開きます。
  • 署名のPNG画像を選択します。
  • PDF上の画像のサイズを変更して配置します。
  • [ファイル]メニューから[PDFにエクスポート]を選択します。

詳細は http://www.howtogeek.com/215485/sign-pdf-documents-without-printing-and-scanning-them-from-any-device/

113
Nate Lampton

多くの人がXournalを推奨していますが、使用できないGimpのバージョンとして動作することがわかりました。したがって、Gimpに精通している場合は、試すことをお勧めします。

  • 署名付きのファイル(電話またはWebカメラで撮った写真も含む)と、署名するドキュメントが含まれたファイルが必要です。後者はPDF形式で、Gimpで開くことができます)
  • 白が十分に白くない場合は、署名にしきい値を適用します
  • ドキュメントの背景が白でない場合、署名の白をアルファに変換します
  • Gimpでドキュメントを開く
  • ドキュメントの上にある署名を新しいレイヤーとして開く([ファイル]-> [レイヤーとして開く])
  • サイズと位置を調整する
  • レイヤーを結合する
  • PDFとしてエクスポート

これは、1ページのドキュメントに署名する必要がある場合に定期的に行い、多かれ少なかれ5分かかります。残念ながら、たとえば複数ページのドキュメントのすべてのページに署名する必要がある場合、これは機能しません。後者の場合は、印刷して署名し、もう一度スキャンするだけです。

13
danza

言及する価値があります Xournal これは素晴らしいUIがあり、テキスト、画像、手書きのメモをPDFファイルに追加できます。唯一の問題はそれです。ネイティブPDFフォームからのテキストをうまく処理しないようです。

9
Mike Chelen

既存のPDFファイルに署名を添付するために変更できるこのスクリプトを見つけました。

次のPastebin URLからダウンロードすることもできます。

これを行う他の多くの方法があるAskUbuntuに関するこのQ&Aもあります。 Q&Aのタイトルは次のとおりです。 既存のPDFファイルに画像を配置する方法

8
slm

私は Pdf でかなり良い経験をしました。

Installation

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

次に バグPythonスクリプト の2行を編集して)修正します。

使用法

UPdfを起動し、画像を追加ツールを選択し、署名を配置する領域の周りに長方形を描き、署名付きの画像ファイルを選択します。背景が透明なPNGが最適です。

7
kynan

このページのどこにも記載されていないLinux向けの最高の無料オフィスソフトウェアを見つけて驚いています。 LibreOffice DrawはPDFを開き、画像を挿入できるようにします。署名ファイルが透明な背景を持つPNGとしてファイルシステムに既に存在する場合、それをページに取得するのは簡単です。 、サイズを変更してDrawの所定の位置に移動します。DrawはデフォルトでドキュメントをODGとして保存するため、変更したドキュメントをPDFにエクスポートする必要があります。

5
Tom Russell

自分の署名コマンドをシェルスクリプトに入れているときに、署名を配置する領域を対話的に選択する方法を探していました。幸いなことに、私はこの質問を見つけましたEmmanuel Branlardのスクリプトには、(xvを使用して)その方法に関するアイデアが含まれています。次の点を実装しました。

  • displayの代わりにImageMagicks xvを使用します
  • stdbuf -oLおよび-updateオプションを使用してライブプレビューを行う
  • 署名をpdftk stampでオーバーレイして、画質の低下を防ぎます
  • pDFファイルから特定のページのみを抽出する
  • gpgで署名を復号化する
  • 署名されたPDFファイルをpdftkで暗号化する
  • wipeで署名を含む中間ファイルをクリーンアップ

だからここにコードです:

#!/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
5
bodo

Debian(ブルズアイ)では、最も簡単な(?)無料の方法が Scribus 1.5.5 を使用する方法であることがわかりましたPDF(これは可能かもしれません)以前のリリースでも):

PDFをインポートし、署名が必要な場所に画像ボックスを作成し、署名ファイルを選択し、必要に応じてサイズを変更して、新しいファイルとしてエクスポートしますPDF(もちろん、テキストボックスを使用して日付などの必要なテキストを配置します。)最終的にはGIMPや類似のものを使用することと同じですが、Scribusに精通している場合は数秒で完了します。アカウントをサインオフするために2回実行しました。私がここにたどり着いた方法です;)

4
Dartmoor Tom

完全を期すために、これを行う代替スクリプトがあります。これは、pdfを(低品質の)画像に変換しません。これは これまでに述べたもの とは対照的です: https:// github.com/martinruenz/signpdf

他のソリューションでの私の経験は:

  • Xournalpdfがめちゃくちゃになっています(ソースからビルドした後でも機能しているようです)
  • スクリプトSignPDFは、PDFを画像に変換し、品質を大幅に低下させます。厄介な依存関係もあります(xv)
  • gimpおよびupdfオプションを試していない
  • 最後に、VMでAcrobat Readerを使用しました。これは、さまざまなフォームにも入力する必要があったためです。
3
Martin R.

Okular PDFビューアには注釈が組み込まれています。PDF署名したいものを開き、左側のバーでレビューを選択し、3番目のオプションを選択してください「フリーハンドライン」というポップアップメニューで、署名を描きます。ネオングリーンではなく黒のインクが必要な場合は、メニューから[設定]を選択し、[Okularの設定]を選択して、[注釈]ボタンを選択します左側のオプションから[フリーハンド線]を選択し、[編集]ボタンを選択します。ここで線の太さと色の両方を調整できます。[適用]をクリックしてお楽しみください。

2
Christian

私はビジネスを運営していますが、Xournalには必要なPDFファイルを品質または幅をもって管理する権限がありません。

また、デジタル署名を常に使用または適用しています。

マスターPDFエディター(現在のバージョン5)は、簡単に期待を超える有料アプリケーションであり、UbuntuのデフォルトのPDFリーダーになりました。主な機能:-文書に署名する-フォームに記入する-変更するテキストとオブジェクト-文書に注釈を付けて強調表示する-PDFファイルをマージして分割する-など

詳細については、次を参照してください。 https://code-industry.net/masterpdfeditor/?-about&ver=5438

0
Brad Horn

updfは本当にこれに適しています。 MacOSでプレビューを使用してドキュメントに「署名」すると、updfはこれに最も近いユーザーエクスペリエンスを提供します。

以下はUbuntu 14.10とDebian 8で動作します。

システムにサードパーティのPPAを追加したくなかったため、代わりに次の方法でupdfを実行しました。

$ bzr branch lp:updf

次に、他の回答から参照される 2行の編集 を作成しました。

依存関係をインストールします。

# 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

(上記で十分ですが、すべてのパッケージが必要なわけではありません)。

pythonプログラムはインプレースで実行できます:

$ ./src/updf.py

残念ながら、入力ドキュメントと比較して、出力ドキュメントの品質は深刻な影響を受ける可能性があります。これを行う正しい方法は、無損失プロセスでオリジナルを変更せずに署名をオーバーレイすることです。一方、updfはオリジナルの再エンコードに従事しているようです。

0
projix