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


65

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

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

回答:


85

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

Ubuntuの場合:

  • Ubuntu Software CenterからXournalをインストールします
  • Xournalを開く
  • [ファイル]メニューから[PDFに注釈を付ける]を選択し、署名するPDFファイルを選択します。
  • ツールバーの[画像]ボタンをクリックします(人のシルエットのように見えます)。
  • ドキュメントをクリックします。
  • 署名のPNG画像を選択します。
  • PDF上の画像のサイズを変更して配置します。
  • [ファイル]メニューから[PDFにエクスポート]を選択します。

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


7
Xournalは本当にバグが多かった-最終的に署名をインポートしてPDFをエクスポートできたとき、スキャンしたPDFはぼやけていた-私の署名は結果のpdfで唯一の鮮明な要素だった。
アンティハアパラ

1
xournal on archでこれを行ったところ、非常にうまく機能しましたが、背景pdfはスキャンではなくドキュメントからのものでした。多分関連?
ブランドンKuczenski

Ubuntu 16.04でも私のために働きました。補足として、xournalを使用して、PDFにさまざまなレイヤーでテキストを追加して注釈を付けることもできます(たとえば、フォームを完成させるのに役立ちます)。
jotadepicas

ふむ これは実際には機能しますが、ミントに関する他のpdfプログラムはテキストフィールドを保存しません...
mendota

9

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


8

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

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

AskUbuntuには、これを行うための他の多くの方法があるこのQ&Aもあります。Q&Aのタイトルは、「既存のpdfファイルに画像を配置する方法」です。


@Freedom_Ben-興味があれば、PNGではなく証明書を使用してPDFに署名する方法も見つけました。LMK。
slm

3
問題は、非常に質の悪いページの画像を作成することです。:/他の答え(updfについて)の方がうまくいきます。:)
odinho-ベルモント14年

2
@slm:非常に本当です。ただし、updfのように画像にスタンプするだけでなく、ページの/ picture /を作成します。pdftkもこのような操作を実行できますが、ここにあるようなドライバースクリプトが必要になります。
odinho-ベルモント14年

1
以前にpdftkとreportlabを使用して同様のことを行いました(pdfの上に差し込み ます):stackoverflow.com/questions/356502/…-効果的な方法を見つけるために多くの努力をしました。そこにPDFを処理する非常に多くの悪い方法。
odinho - Velmont

2
使用しないバージョンがありますxvか?インストールするには余りにも困難でありxv、それはフリーソフトウェアではありません...
クリス・ベック

8

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

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

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


2
上記の解決策をすべて試してみましたが、多くの労力をかけて失敗しました。xournal実際には正しく動作しません。ユーザーインターフェースにバグがあるようです。画像をインポートした後、画像を拡大縮小または移動できませんでした。xvコンパイルしなかったため、Cコードに多数のパッチが必要になり、最終的には機能しません。updf、またはそのubuntu PPAは、もはや存在しません。(2016年12月ubuntu xenialでテスト済み)gimpが道のりです、これに感謝します!
クリスベック

2
これは美しい解決策です!透明な背景で署名を作成し、ドキュメントをレイヤーとして追加するときに画像を拡大縮小するには、画像編集スキルが必要です。ちなみに、日付は作業XCFファイルに少し手間をかけたレイヤー(テキストサイズと場所)として追加することもできます。結果のPDFエクスポートは非​​常に受け入れられます!
トムラッセル

1
ドキュメントに複数のページがある場合:ページをレイヤーとしてインポート(デフォルトオプション)、ドキュメントを「.mng」(複数のpngを意味します)として保存します。gimpに.mng拡張子と「エクスポート」オプションを追加し、コマンドラインで:convert original_name.mng output_name.pdf。それで全部です。ちなみに、出力の解像度が低い場合は、最初にpdfをインポートしながらpdf画像のサイズを拡大してみてください。幅に「2000」のようなものを試してください。MNGにエクスポートするときは、オプションの「圧縮レベル」を最大にチェックすることを忘れないでください。これにより、最終ファイルが重くなりすぎません。
ディエゴアンドレスディアスエスピノサ

これに沿って、この答え(onlinesignature.com/es/draw-a-signature-onlineは)あなたが必要とするすべてである
Alfergon

6

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

設置

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

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

使用法

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


4
笑、それはPythonの2行の編集についてとても面白いです。私がそのコメントを作成したのは私だからです。そして、ここで私は再びPDFに署名する方法を探しています
。intarwebsの

最後のリリースはUbuntu Quantal向けだったようです。「フェッチに失敗しました...」という15.04(Vivid)エラーでレポを追加
Ponkadoodle

@WallacolooパッケージはRaringおよびSaucy専用に構築されています。他のディストリビューションについては、でlst作成したファイルのディストリビューションを手動で変更する必要があります/etc/apt/sources.list.d
キナン

PreciseまたはQuantalディストリビューションを使用して、Wily 15.10のスプラッシュスクリーンの後にクラッシュします。
ジョナサンノイフェルド

Debian Busterで動作します。カスタムスクリプトのような他の回答は、現在利用できないpdftkを使用しており、Xournalはリポジトリにありません。Updf ダウンロードページまたは直接ダウンロードリンクsudo dpkg -i file.deb; sudo apt install -f回答に記載されているとおりにPythonコードをインストールして編集します。
リュック

4

独自の署名コマンドをシェルスクリプトに入れながら、署名を送信する領域をインタラクティブに選択する方法を探していました。幸いなことに、私はこの質問を見つけました。エマニュエル・ブランラードの脚本には、それを行う方法に関するアイデアが含まれています(で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

これは私には機能しません。imagamagickは読み込まれますが、スプラッシュ画面のみを表示します。
アンドレアス

2

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

他のソリューションでの私の経験は次のとおりです。

  • Xournalはpdfを台無しにしました(ただし、ソースからビルドした後は動作するようです)
  • スクリプトSignPDFは、 pdfを画像に変換し、品質を大幅に低下させます。面倒な依存関係もあります(xv)
  • gimpupdfオプションを試しませんでした
  • 最終的に、VMでAcrobat Readerを使用しました。さまざまなフォームに入力する必要があったためです。

共有してくれてありがとう。スクリプトを確認します。Xournalで非常に良い成功を収めました。問題を引き起こす可能性があるため、元のファイル名にエクスポートしないようにする必要があります。エクスポート先の新しい名前を選択すると(元のPDFを上書きしないように)、このバグを回避できます。
Freedom_Ben

1

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


0

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はオリジナルの再エンコードに関与しているように見えます。


python-gi-cairo動作させるには、依存関係に追加する必要がありました。
ジョマ

ジョマ:ありがとう。python-gi-cairoをリストに追加しました。
projix

0

私はビジネスを営んでおり、Xournalには必要なpdfファイルの品質や制御の幅がありません。

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

Master PDF Editor(この日付のバージョン5)は、期待を簡単に超える有料アプリケーションであり、UbuntuのデフォルトのPDFリーダーになりました。主な機能:-ドキュメントへの署名-フォームへの入力-テキストとオブジェクトの変更-ドキュメントへの注釈とハイライト-PDFファイルのマージと分割-など

詳細については、https//code-industry.net/masterpdfeditor/?-about&ver = 5438をご覧ください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.