筆記された署名のスキャンされたコピーがあり、署名ブロック内のいくつかのドキュメントに適用する必要があります。私はこれまでずっとWindowsでこれを行っていましたが、現在はLinuxしかありません。
これは可能ですか?Linux(Gnome 3)でPDFファイルに署名画像を追加するにはどうすればよいですか?
筆記された署名のスキャンされたコピーがあり、署名ブロック内のいくつかのドキュメントに適用する必要があります。私はこれまでずっとWindowsでこれを行っていましたが、現在はLinuxしかありません。
これは可能ですか?Linux(Gnome 3)でPDFファイルに署名画像を追加するにはどうすればよいですか?
回答:
Xournalを使用すると、PDFに注釈を付けたり、カスタム画像(透明なPNGなど)を追加できます。フリーハンドのメモや描画に使用されますが、PDFに注釈を付けることもできます。
Ubuntuの場合:
既存のPDFファイルに署名を添付するために変更できるこのスクリプトを見つけました。
次のpastebin URLからダウンロードすることもできます。
AskUbuntuには、これを行うための他の多くの方法があるこのQ&Aもあります。Q&Aのタイトルは、「既存のpdfファイルに画像を配置する方法」です。。
xv
か?インストールするには余りにも困難でありxv
、それはフリーソフトウェアではありません...
多くの人がXournalを推奨していますが、使用できないGimpのバージョンとして機能することがわかりました。したがって、Gimpに慣れている場合は、試してみることをお勧めします。
1ページのドキュメントに署名する必要がある場合、これを定期的に実行します。5分ほどかかります。残念ながら、たとえば複数ページのドキュメントのすべてのページに署名する必要がある場合、これは機能しません。後者の場合は、印刷、署名、スキャンのみを行います!
xournal
実際には正しく動作しません。ユーザーインターフェースにバグがあるようです。画像をインポートした後、画像を拡大縮小または移動できませんでした。xv
コンパイルしなかったため、Cコードに多数のパッチが必要になり、最終的には機能しません。updf
、またはそのubuntu PPAは、もはや存在しません。(2016年12月ubuntu xenialでテスト済み)gimp
が道のりです、これに感謝します!
convert original_name.mng output_name.pdf
。それで全部です。ちなみに、出力の解像度が低い場合は、最初にpdfをインポートしながらpdf画像のサイズを拡大してみてください。幅に「2000」のようなものを試してください。MNGにエクスポートするときは、オプションの「圧縮レベル」を最大にチェックすることを忘れないでください。これにより、最終ファイルが重くなりすぎません。
sudo add-apt-repository ppa:atareao/updf
sudo apt-get update
sudo apt-get install -y updf
次に、Pythonスクリプトの2行を編集してバグを修正します。
uPdfを起動し、[ 画像の追加]ツールを選択し、署名を配置する領域の周囲に四角形を描画して、署名付きの画像ファイルを選択します。背景が透明なPNGが最適です。
lst
作成したファイルのディストリビューションを手動で変更する必要があります/etc/apt/sources.list.d
。
sudo dpkg -i file.deb; sudo apt install -f
回答に記載されているとおりにPythonコードをインストールして編集します。
独自の署名コマンドをシェルスクリプトに入れながら、署名を送信する領域をインタラクティブに選択する方法を探していました。幸いなことに、私はこの質問を見つけました。エマニュエル・ブランラードの脚本には、それを行う方法に関するアイデアが含まれています(でxv
)。次のポイントを実装しました。
display
代わりにImageMagicks を使用しますxv
stdbuf -oL
する-update
オプションpdftk stamp
画質の低下を防ぎますgpg
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
完全を期すために、これを行うための代替スクリプトがあります。これは、これまでに述べたものとは対照的に、 pdfを(低品質)画像に変換しません:https : //github.com/martinruenz/signpdf
他のソリューションでの私の経験は次のとおりです。
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
動作させるには、依存関係に追加する必要がありました。
私はビジネスを営んでおり、Xournalには必要なpdfファイルの品質や制御の幅がありません。
また、デジタル署名を常に使用または適用しています。
Master PDF Editor(この日付のバージョン5)は、期待を簡単に超える有料アプリケーションであり、UbuntuのデフォルトのPDFリーダーになりました。主な機能:-ドキュメントへの署名-フォームへの入力-テキストとオブジェクトの変更-ドキュメントへの注釈とハイライト-PDFファイルのマージと分割-など
詳細については、https://code-industry.net/masterpdfeditor/?-about&ver = 5438をご覧ください。