Linux에서 PDF에 서명 .png를 추가하려면 어떻게해야합니까?


65

작성한 서명 사본을 스캔하여 서명 블록의 일부 문서에 적용해야합니다. 나는 항상 Windows 에서이 작업을 수행했지만 이제는 Linux 만 있습니다.

이게 가능해? Linux (Gnome 3)에서 PDF 파일에 서명 이미지를 추가하려면 어떻게해야합니까?

답변:


85

Xournal을 사용하면 PDF에 주석을 달고 사용자 정의 이미지 (예 : 투명한 PNG)를 추가 할 수 있습니다. 자유형 메모 및 그림 작성에 사용되지만 PDF에 주석을 달 수도 있습니다.

우분투에서 :

  • 우분투 소프트웨어 센터를 통해 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에서 유일하게 선명한 요소였습니다.
Antti Haapala

1
방금 xournal을 아치로 사용 하여이 작업을 수행했으며 꽤 잘 작동했지만 배경 pdf는 스캔이 아닌 문서에서 가져 왔습니다. 아마도 관련이 있습니까?
Brandon Kuczenski

우분투 16.04에서도 저를 위해 일했습니다. 참고로, xournal을 사용하여 PDF 위에 텍스트를 다른 레이어에 추가하여 PDF에 주석을 달 수 있습니다 (예 : 양식을 완성하는 데 유용함).
jotadepicas

흠. 실제로 이것은 작동하지만 민트의 다른 pdf 프로그램은 텍스트 필드를 저장하지 않습니다 ...
mendota

9

UI가 훌륭하고 텍스트, 이미지 및 손으로 쓴 메모를 PDF 파일에 추가 할 수 있는 Xournal 을 언급 할 가치가 있습니다. 내가 가진 유일한 문제는 네이티브 PDF 양식의 텍스트를 잘 처리하지 못하는 것입니다.


8

기존 PDF 파일에 서명을 첨부하도록 수정할 수있는이 스크립트를 찾았습니다.

이 pastebin URL에서 다운로드 할 수도 있습니다.

AskUbuntu에는이 작업을 수행하는 다른 방법이 많이 있습니다. Q & A 제목 : 기존 pdf 파일에 사진을 올리는 방법? .


@Freedom_Ben-관심이 있다면 PNG 대신 인증서를 사용하여 PDF에 서명하는 방법을 찾았습니다. LMK.
slm

3
문제는 품질이 매우 나쁜 페이지의 이미지를 생성한다는 것입니다. : / 다른 답변 (약 updf)이 더 잘 작동합니다. :)
odinho-Velmont 2016 년

2
@ slm : 매우 그렇습니다. 그러나 여전히 updf처럼 이미지를 스탬핑하는 대신 페이지의 / picture /를 만듭니다. pdftk는 또한 그러한 작업을 수행 할 수 있지만 여기에있는 것과 같은 드라이버 스크립트가 필요합니다.
odinho-Velmont 2018 년

1
전에 pdftk와 reportlab을 사용하여 비슷한 작업을 수행했습니다 (pdf 위에 메일 병합) : stackoverflow.com/questions/356502/…- 효과적인 방법을 찾기 위해 많은 노력을 기울였습니다. PDF를 처리하는 많은 나쁜 방법이 있습니다.
odinho-Velmont 2016 년

2
사용하지 않는 버전이 xv있습니까? 설치하기가 어렵고 xv무료 소프트웨어가 아닙니다 ...
Chris Beck

8

많은 사람들이 Xournal을 추천하지만, 사용할 수없는 Gimp 버전으로 작동하는 것으로 나타났습니다. 따라서 Gimp에 익숙하다면 시도해 보는 것이 좋습니다.

  • 서명이있는 파일 (전화 또는 웹캠으로 촬영 한 사진 포함)과 서명 할 문서가있는 파일이 있어야합니다. 후자는 PDF 형식으로 제공되며 Gimp에서 열 수 있습니다.
  • 흰색이 흰색이 아닌 경우 서명에 임계 값을 적용하십시오.
  • 문서의 배경이 흰색이 아닌 경우 서명에서 흰색을 알파로 변환
  • 김프와 함께 문서를 엽니 다
  • 문서 상단의 서명을 새 레이어로 엽니 다 (파일-> 레이어로 열기)
  • 크기와 위치 조정
  • 계층을 병합하다
  • PDF로 내보내기

단일 페이지 문서에 서명해야 할 때이 작업을 정기적으로 수행하며 5 분 정도 걸립니다. 예를 들어 다중 페이지 문서의 모든 페이지에 서명해야하는 경우에는 작동하지 않습니다. 후자의 경우에는 그냥 인쇄하고 서명 한 후 다시 스캔하십시오!


2
위의 모든 솔루션을 시도했지만 많은 노력을 기울여 실패했습니다. xournal실제로 제대로 작동하지 않으면 사용자 인터페이스에 버그가있는 것 같으며 이미지를 가져온 후 크기를 조정하거나 이동할 수 없었습니다. xv컴파일하지 않았고 C 코드에 대한 수많은 패치가 필요하며 결국 작동하지 않습니다. updf또는 우분투 PPA가 더 이상 존재하지 않습니다. (2016 년 12 월 우분투 xenial에서 테스트 됨) gimp가 갈 길입니다. 감사합니다!
Chris Beck

2
이것은 아름다운 해결책입니다! 투명한 배경으로 서명을 만들고 문서에 레이어로 추가 할 때 이미지의 크기를 조정하려면 이미지 편집 기술이 필요합니다. BTW에서, 날짜는 약간의 소란 (텍스트 크기 및 위치)을 가진 계층으로 작업 XCF 파일에 추가 될 수도 있습니다. 결과 PDF 내보내기는 상당히 수용 가능합니다!
Tom Russell

1
문서에 여러 페이지가있는 경우 : 페이지를 레이어로 가져 오기 (기본 옵션), 문서를 ".mng"(여러 png를 의미 함)로 저장하면 gimp에 .mng 확장자와 "export as"옵션 만 추가하면됩니다. : convert original_name.mng output_name.pdf. 그게 다야. 그런데 출력 해상도가 낮은 경우 처음에 pdf를 가져 오는 동안 pdf 이미지의 크기를 확대 해보십시오. 너비는 "2000"과 같이 시도하십시오. MNG로 내보낼 때 "압축 수준"옵션을 최대 값으로 확인하는 것을 잊지 마십시오. 최종 파일은 너무 무겁지 않습니다.
Diego Andrés Díaz Espinoza

이것과 함께이 답변 ( 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 스크립트에서 두 줄편집 하여 버그수정하십시오 .

용법

uPdf를 시작 하고 이미지 추가 도구를 선택하고 서명을 원하는 영역 주위에 사각형을 그린 다음 서명이있는 이미지 파일을 선택하십시오. 투명한 배경의 PNG가 가장 효과적입니다.


4
lol, 파이썬 2 줄을 편집하는 것이 너무 재미 있습니다. 나는 그 의견을 만든 사람이기 때문에. 그리고 여기에 PDF에 다시 서명 할 수있는 방법을 찾고 있습니다. intarwebs에서 도움이되는 사람들에 대해 행복합니다 :)
odinho-Velmont

Ubuntu Quantal의 마지막 릴리스 인 것 같습니다. "페치 실패 ..."와 함께 15.04 (생생한) 오류에 대한 repo 추가
Ponkadoodle

@Wallacoloo이 패키지는 Raring and Saucy 전용입니다. 다른 배포의 lst경우에서 만든 파일 에서 배포를 수동으로 변경해야합니다 /etc/apt/sources.list.d.
kynan

정확한 분포 또는 Quantal 분포를 사용하여 Wily 15.10에서 스플래시 화면 후 충돌이 발생합니다.
Jonathan Neufeld

데비안 버스터에서 작동합니다. 사용자 정의 스크립트와 같은 다른 답변은 현재 사용할 수없는 pdftk를 사용하며 Xournal은 리포지토리에 없습니다. Updf 다운로드 페이지 또는 직접 다운로드 링크 . sudo dpkg -i file.deb; sudo apt install -f답변에 언급 된대로 Python 코드를 설치 한 후 편집하십시오.
Luc

4

고유 한 서명 명령을 쉘 스크립트에 넣는 동안 서명이 이동해야하는 영역을 대화식으로 선택할 수있는 방법을 찾고있었습니다. 운 좋게도이 질문을 발견했으며 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

이것은 나를 위해 작동하지 않으며 imagamagick 이로 드되지만 스플래시 화면 만 표시합니다.
안드레아스

2

완전성을 위해 지금까지 언급 한 것과 달리 pdf를 (낮은 품질의) 이미지로 변환하지 않는 대체 스크립트가 있습니다 : https://github.com/martinruenz/signpdf

다른 솔루션에 대한 나의 경험은 다음과 같습니다.

  • Xournal 은 pdf를 엉망으로 만들었습니다 (소스에서 빌드 한 후에 작동하는 것처럼 보였습니다)
  • 스크립트 SignPDF 는 PDF를 이미지로 변환하고 품질을 크게 떨어 뜨립니다 . 또한 번거로운 의존성이 있습니다 (xv)
  • 나는 김프updf 옵션을 시도하지 않았다
  • 결국 다양한 양식을 작성해야했기 때문에 VM에서 Acrobat Reader를 사용했습니다.

다시 공유해 주셔서 감사합니다. 스크립트를 확인하겠습니다. Xournal을 사용하여 성공을 거두었습니다. 문제가 발생할 수 있으므로 원래 파일 이름으로 내 보내지 않아야합니다. 내보낼 새 이름을 선택하면 (원본 PDF를 덮어 쓰지 않음)이 버그를 피할 수 있습니다.
Freedom_Ben

1

Okular PDF 뷰어에는 주석이 내장되어 있습니다. 서명하려는 PDF를 열고 왼쪽의 막대에서 리뷰를 선택한 다음 팝업 메뉴에서 '자유 선'이라는 세 번째 옵션을 선택하십시오. 서명을 작성하십시오. 네온 녹색 대신 검은 색 잉크를 사용하려면 메뉴에서 '설정'을 선택하고 '오쿠라 구성'을 선택한 다음 왼쪽의 '주석'버튼을 선택하십시오. 옵션에서 'Freehand Line'을 선택한 다음 'Edit'버튼을 선택하십시오. 여기서 선 두께와 색상을 모두 조정할 수 있습니다. 적용을 누르고 즐기십시오.


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

(상기 내용만으로도 모든 패키지가 필요한 것은 아닙니다).

그리고 파이썬 프로그램은 제자리에서 실행 가능합니다.

$ ./src/updf.py

불행히도, 입력 문서와 비교하여 출력 문서에서 품질이 심각하게 영향을받을 수 있습니다. 이를 수행하는 올바른 방법은 무손실 프로세스에서 서명을 오버레이하고 원본을 변경하지 않는 것입니다. updf는 원본을 다시 인코딩하는 것으로 보입니다.


python-gi-cairo종속성 을 추가 하여 작동시켜야했습니다.
Joma

Joma : 감사합니다; 이제 python-gi-cairo를 목록에 추가했습니다.
projix 2016 년

0

나는 비즈니스를 운영하고 있으며 Xournal은 필요한 pdf 파일에 대한 품질 또는 폭 넓은 제어 권한이 없습니다.

또한 항상 디지털 서명을 사용하거나 적용하고 있습니다.

Master PDF Editor (현재 날짜 5 버전)는 예상보다 쉽게 ​​초과되는 유료 응용 프로그램이며 현재 우분투의 기본 PDF 리더입니다. 주요 특징 :-문서 서명-양식 작성-텍스트 및 객체 수정-문서 주석 및 강조 표시-PDF 파일 병합 및 분할-기타

자세한 내용은 https://code-industry.net/masterpdfeditor/?-about&ver=5438 로 이동 하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.