작성한 서명 사본을 스캔하여 서명 블록의 일부 문서에 적용해야합니다. 나는 항상 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를 사용하십시오.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
(상기 내용만으로도 모든 패키지가 필요한 것은 아닙니다).
그리고 파이썬 프로그램은 제자리에서 실행 가능합니다.
$ ./src/updf.py
불행히도, 입력 문서와 비교하여 출력 문서에서 품질이 심각하게 영향을받을 수 있습니다. 이를 수행하는 올바른 방법은 무손실 프로세스에서 서명을 오버레이하고 원본을 변경하지 않는 것입니다. updf는 원본을 다시 인코딩하는 것으로 보입니다.
python-gi-cairo
종속성 을 추가 하여 작동시켜야했습니다.
나는 비즈니스를 운영하고 있으며 Xournal은 필요한 pdf 파일에 대한 품질 또는 폭 넓은 제어 권한이 없습니다.
또한 항상 디지털 서명을 사용하거나 적용하고 있습니다.
Master PDF Editor (현재 날짜 5 버전)는 예상보다 쉽게 초과되는 유료 응용 프로그램이며 현재 우분투의 기본 PDF 리더입니다. 주요 특징 :-문서 서명-양식 작성-텍스트 및 객체 수정-문서 주석 및 강조 표시-PDF 파일 병합 및 분할-기타
자세한 내용은 https://code-industry.net/masterpdfeditor/?-about&ver=5438 로 이동 하십시오.