작성한 서명 사본을 스캔하여 서명 블록의 일부 문서에 적용해야합니다. 나는 항상 Windows 에서이 작업을 수행했지만 이제는 Linux 만 있습니다.
이게 가능해? Linux (Gnome 3)에서 PDF 파일에 서명 이미지를 추가하려면 어떻게해야합니까?
작성한 서명 사본을 스캔하여 서명 블록의 일부 문서에 적용해야합니다. 나는 항상 Windows 에서이 작업을 수행했지만 이제는 Linux 만 있습니다.
이게 가능해? Linux (Gnome 3)에서 PDF 파일에 서명 이미지를 추가하려면 어떻게해야합니까?
답변:
Xournal을 사용하면 PDF에 주석을 달고 사용자 정의 이미지 (예 : 투명한 PNG)를 추가 할 수 있습니다. 자유형 메모 및 그림 작성에 사용되지만 PDF에 주석을 달 수도 있습니다.
우분투에서 :
기존 PDF 파일에 서명을 첨부하도록 수정할 수있는이 스크립트를 찾았습니다.
이 pastebin URL에서 다운로드 할 수도 있습니다.
AskUbuntu에는이 작업을 수행하는 다른 방법이 많이 있습니다. Q & A 제목 : 기존 pdf 파일에 사진을 올리는 방법? .
xv있습니까? 설치하기가 어렵고 xv무료 소프트웨어가 아닙니다 ...
많은 사람들이 Xournal을 추천하지만, 사용할 수없는 Gimp 버전으로 작동하는 것으로 나타났습니다. 따라서 Gimp에 익숙하다면 시도해 보는 것이 좋습니다.
단일 페이지 문서에 서명해야 할 때이 작업을 정기적으로 수행하며 5 분 정도 걸립니다. 예를 들어 다중 페이지 문서의 모든 페이지에 서명해야하는 경우에는 작동하지 않습니다. 후자의 경우에는 그냥 인쇄하고 서명 한 후 다시 스캔하십시오!
xournal실제로 제대로 작동하지 않으면 사용자 인터페이스에 버그가있는 것 같으며 이미지를 가져온 후 크기를 조정하거나 이동할 수 없었습니다. xv컴파일하지 않았고 C 코드에 대한 수많은 패치가 필요하며 결국 작동하지 않습니다. updf또는 우분투 PPA가 더 이상 존재하지 않습니다. (2016 년 12 월 우분투 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 스크립트에서 두 줄 을 편집 하여 버그 를 수정하십시오 .
uPdf를 시작 하고 이미지 추가 도구를 선택하고 서명을 원하는 영역 주위에 사각형을 그린 다음 서명이있는 이미지 파일을 선택하십시오. 투명한 배경의 PNG가 가장 효과적입니다.
lst경우에서 만든 파일 에서 배포를 수동으로 변경해야합니다 /etc/apt/sources.list.d.
sudo dpkg -i file.deb; sudo apt install -f답변에 언급 된대로 Python 코드를 설치 한 후 편집하십시오.
고유 한 서명 명령을 쉘 스크립트에 넣는 동안 서명이 이동해야하는 영역을 대화식으로 선택할 수있는 방법을 찾고있었습니다. 운 좋게도이 질문을 발견했으며 Emmanuel Branlard 의 스크립트 에는 (로 xv) 하는 방법에 대한 아이디어가 포함되어 있습니다 . 나는 다음 사항을 구현했다.
display대신 ImageMagicks를 사용하십시오.xvstdbuf -oL및 -update옵션pdftk stamp이미지 품질 저하를 방지하기 위해 서명을 오버레이gpgpdftkwipe코드는 다음과 같습니다.
#!/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
(상기 내용만으로도 모든 패키지가 필요한 것은 아닙니다).
그리고 파이썬 프로그램은 제자리에서 실행 가능합니다.
$ ./src/updf.py
불행히도, 입력 문서와 비교하여 출력 문서에서 품질이 심각하게 영향을받을 수 있습니다. 이를 수행하는 올바른 방법은 무손실 프로세스에서 서명을 오버레이하고 원본을 변경하지 않는 것입니다. updf는 원본을 다시 인코딩하는 것으로 보입니다.
python-gi-cairo종속성 을 추가 하여 작동시켜야했습니다.
나는 비즈니스를 운영하고 있으며 Xournal은 필요한 pdf 파일에 대한 품질 또는 폭 넓은 제어 권한이 없습니다.
또한 항상 디지털 서명을 사용하거나 적용하고 있습니다.
Master PDF Editor (현재 날짜 5 버전)는 예상보다 쉽게 초과되는 유료 응용 프로그램이며 현재 우분투의 기본 PDF 리더입니다. 주요 특징 :-문서 서명-양식 작성-텍스트 및 객체 수정-문서 주석 및 강조 표시-PDF 파일 병합 및 분할-기타
자세한 내용은 https://code-industry.net/masterpdfeditor/?-about&ver=5438 로 이동 하십시오.