Làm cách nào tôi có thể thêm chữ ký .png vào PDF trong Linux?


65

Tôi có một bản sao quét chữ ký bằng văn bản của mình và tôi cần áp dụng nó cho một số tài liệu trong khối chữ ký. Tôi đã từng làm điều này trên Windows mọi lúc nhưng giờ tôi chỉ có Linux.

Điều này có thể không? Làm cách nào để thêm hình ảnh chữ ký vào tệp PDF trong Linux (Gnome 3)?

Câu trả lời:


85

Sử dụng Xournal, bạn có thể chú thích các tệp PDF và thêm hình ảnh tùy chỉnh (ví dụ: PNG trong suốt). Mặc dù nó được sử dụng để ghi chú và vẽ tự do, nhưng nó cũng có thể chú thích các tệp PDF.

Trên Ubuntu:

  • Cài đặt Xournal thông qua Trung tâm phần mềm Ubuntu
  • Mở Xournal
  • Chọn "Chú thích PDF" từ menu Tệp và chọn tệp PDF của bạn sẽ được ký.
  • Nhấp vào nút "Hình ảnh" trên thanh công cụ (nó trông giống như hình bóng của một người).
  • Bấm vào tài liệu.
  • Chọn một hình ảnh PNG của chữ ký của bạn.
  • Thay đổi kích thước và định vị hình ảnh trên PDF.
  • Chọn "Xuất ra PDF" từ menu Tệp.

Thêm thông tin tại http://www.howtogeek.com/215485/sign-pdf-document-without-printing-and-scanning-them-from-any-device/


7
Xournal thực sự có lỗi - khi cuối cùng tôi đã nhập được chữ ký và xuất PDF, tệp PDF được quét bị mờ - chữ ký của tôi là yếu tố rõ nét duy nhất trên pdf kết quả.
Antti Haapala

1
Tôi chỉ làm điều này với xournal trên vòm và nó hoạt động khá độc đáo, nhưng pdf nền là từ một tài liệu, không phải là quét. có lẽ có liên quan?
Brandon Kuc chụcki

Làm việc cho tôi cũng như trên Ubuntu 16.04. Là một sidenote, bạn cũng có thể sử dụng xournal để chú thích PDF bằng cách thêm văn bản lên trên nó trong các lớp khác nhau (ví dụ hữu ích cho các biểu mẫu hoàn chỉnh).
jotadepicas

hm vì vậy, điều này thực sự hoạt động, nhưng các chương trình pdf khác trên mint không lưu các trường văn bản ...
mendota

9

Điều đáng nói là Xournal có giao diện người dùng đẹp và cho phép thêm văn bản, hình ảnh và ghi chú viết tay vào tệp PDF. Vấn đề duy nhất tôi gặp phải là dường như không xử lý văn bản từ các biểu mẫu PDF gốc rất tốt.


8

Tôi tìm thấy tập lệnh này mà bạn có thể sửa đổi để đính kèm chữ ký vào tệp PDF hiện có.

Bạn cũng có thể tải xuống từ URL pastebin này:

Ngoài ra còn có Hỏi & Đáp trên AskUbfox có nhiều phương pháp khác để thực hiện việc này. Câu hỏi và trả lời có tiêu đề: Làm cách nào để đặt ảnh lên tệp pdf hiện có? .


@Freedom_Ben - cũng như nếu bạn quan tâm, tôi đã tìm cách ký các tệp PDF của bạn bằng chứng chỉ thay vì chỉ là PNG. LMK.
slm

3
Vấn đề là nó tạo ra hình ảnh của các trang với chất lượng rất xấu. : / Câu trả lời khác (về updf) hoạt động tốt hơn. :)
odinho - Velmont

2
@slm: Rất đúng. Nhưng nó vẫn tạo ra một / hình ảnh / của trang, thay vì chỉ dán hình ảnh vào như updf. pdftk cũng có thể thực hiện các thao tác như vậy, nhưng sẽ cần một tập lệnh trình điều khiển giống như ở đây.
odinho - Velmont

1
Tôi đã sử dụng pdftk và reportlab để làm những việc tương tự trước đây (kết hợp thư trên đầu trang pdf): stackoverflow.com/questions/356502/ trộm - đã nỗ lực rất nhiều để tìm ra cách hiệu quả. Rất nhiều cách xấu để xử lý các tệp PDF ngoài kia.
odinho - Velmont

2
Có phiên bản này không sử dụng xv? Quá khó để cài đặt xvvà nó không phải là phần mềm miễn phí ...
Chris Beck

8

Rất nhiều người giới thiệu Xournal, nhưng tôi thấy nó hoạt động như một phiên bản của Gimp mà tôi không thể sử dụng. Vì vậy, nếu bạn quen thuộc với Gimp, tôi khuyên bạn nên thử nó.

  • Bạn nên có một tệp có chữ ký (thậm chí ảnh được chụp bằng điện thoại hoặc webcam) và một tệp có tài liệu sẽ được ký. Cái sau sẽ ở định dạng PDF, có thể được mở bởi Gimp
  • Áp dụng một ngưỡng trên chữ ký nếu màu trắng không đủ trắng
  • Chuyển đổi màu trắng thành alpha trong chữ ký nếu nền của tài liệu không phải là màu trắng
  • Mở tài liệu với Gimp
  • Mở chữ ký trên cùng của tài liệu dưới dạng một lớp mới (Tệp -> Mở dưới dạng lớp)
  • Điều chỉnh kích thước và vị trí
  • Hợp nhất các lớp
  • Xuất dưới dạng PDF

Tôi làm điều này thường xuyên khi tôi cần ký các tài liệu trang đơn và tôi mất ít nhất năm phút. Thật không may, điều này sẽ không hoạt động nếu bạn cần ví dụ để ký mỗi trang của một tài liệu nhiều trang. Trong trường hợp sau tôi chỉ cần in, ký và quét lại!


2
Tôi đã thử tất cả các giải pháp trên, tất cả đều thất bại sau nhiều nỗ lực. xournalkhông thực sự hoạt động đúng, dường như có lỗi trong giao diện người dùng và tôi không thể phóng to hoặc di chuyển hình ảnh sau khi tôi nhập chúng. xvđã không biên dịch, yêu cầu nhiều bản vá cho mã C, cuối cùng cũng không hoạt động. updfhoặc PPA ubfox của nó, không còn tồn tại nữa. (đã thử nghiệm trên ubfox xenial dec 2016) gimplà cách tốt nhất, cảm ơn vì điều này!
Chris Beck

2
Đây là một giải pháp đẹp! Nó đòi hỏi một số kỹ năng chỉnh sửa hình ảnh để tạo chữ ký với nền trong suốt và để chia tỷ lệ hình ảnh khi thêm vào tài liệu dưới dạng một lớp. BTW, ngày cũng có thể được thêm vào tệp XCF đang hoạt động dưới dạng một lớp với một chút ồn ào (kích thước văn bản và vị trí). Kết quả xuất PDF là hoàn toàn chấp nhận được!
Tom Russell

1
Nếu tài liệu có nhiều trang: nhập trang dưới dạng lớp (tùy chọn mặc định), hãy lưu tài liệu dưới dạng ".mng" (có nghĩa là nhiều png) chỉ cần thêm phần mở rộng .mng và tùy chọn "xuất dưới dạng" trên gimp, giờ đây bạn đã nhận được dòng lệnh và thực hiện : convert original_name.mng output_name.pdf. Đó là tất cả. Nhân tiện, nếu độ phân giải cho đầu ra thấp, hãy thử phóng to kích thước hình ảnh pdf trong khi nhập pdf khi bắt đầu: thử một cái gì đó như "2000" cho chiều rộng. Khi xuất sang MNG, đừng quên kiểm tra tùy chọn "mức nén" đến mức tối đa theo cách này, tệp cuối cùng sẽ không quá nặng.
Diego Andrés Díaz Espinoza

Câu trả lời này cùng với điều này ( onlinesignature.com/es/draw-a-signature-online ) là tất cả những gì bạn cần
Alfergon

6

Tôi đã có một trải nghiệm khá tốt với uPdf .

Cài đặt

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

Sau đó sửa lỗi bằng cách chỉnh sửa 2 dòng trong tập lệnh Python .

Sử dụng

Khởi chạy uPdf, chọn công cụ Thêm hình ảnh , vẽ hình chữ nhật xung quanh khu vực bạn muốn chữ ký đi và chọn tệp hình ảnh có chữ ký của bạn. Một PNG với nền trong suốt hoạt động tốt nhất.


4
lol, thật buồn cười về việc chỉnh sửa 2 dòng Python. Bởi vì tôi là người đã tạo ra nhận xét đó. Và ở đây tôi đang tìm cách để ký lại PDF, rất vui về những người hữu ích trên mạng nội bộ :)
odinho - Velmont

Có vẻ như bản phát hành cuối cùng là dành cho Ubuntu Quantal. Thêm lỗi repo vào ngày 15.04 (Sống động) với "Không thể tìm nạp ..."
Ponkadoodle

@Wallacoloo Gói chỉ được xây dựng cho Rared và Saucy. Đối với bất kỳ phân phối nào khác, bạn cần thay đổi thủ công phân phối trong lsttệp được tạo trong /etc/apt/sources.list.d.
kynan

Sự cố sau màn hình giật gân trên Wily 15.10 bằng cách sử dụng phân phối Chính xác hoặc Định lượng.
Jonathan Neufeld

Hoạt động với tôi trên Debian Buster. Các câu trả lời khác như tập lệnh tùy chỉnh sử dụng pdftk hiện không có sẵn và Xournal không có trong kho. Trang tải về Updf hoặc liên kết tải xuống trực tiếp . Cài đặt với sudo dpkg -i file.deb; sudo apt install -fvà sau đó chỉnh sửa mã Python như được đề cập trong câu trả lời.
Luc

4

Trong khi đặt các lệnh chữ ký của riêng tôi vào một tập lệnh shell, tôi đã tìm cách để tương tác chọn vùng mà chữ ký sẽ đi. May mắn thay tôi đã tìm thấy câu hỏi này và kịch bản của Emmanuel Branlard chứa ý tưởng về cách thực hiện (với xv). Tôi đã thực hiện các điểm sau:

  • sử dụng ImageMagicks displaythay vìxv
  • sử dụng stdbuf -oL-updatetùy chọn để có bản xem trước trực tiếp
  • phủ chữ ký với pdftk stampđể ngăn chặn sự suy giảm chất lượng hình ảnh
  • chỉ trích xuất trang cụ thể từ tệp pdf
  • giải mã chữ ký với gpg
  • mã hóa tập tin pdf đã ký với pdftk
  • dọn dẹp các tập tin trung gian có chứa chữ ký với wipe

Vì vậy, đây là mã:

#!/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

Điều này không làm việc cho tôi, tải hình ảnh nhưng chỉ hiển thị màn hình giật gân.
Andreas

2

Để hoàn thiện, có một kịch bản thay thế để thực hiện việc này, không chuyển đổi pdf thành hình ảnh (chất lượng thấp), trái ngược với kịch bản được đề cập cho đến nay : https://github.com/martinruenz/signpdf

Kinh nghiệm của tôi với các giải pháp khác là:

  • Xournal đã nhầm lẫn với pdf (có vẻ như nó hoạt động sau khi xây dựng từ nguồn)
  • Kịch bản SignPDF chuyển đổi pdf thành hình ảnh và giảm chất lượng đáng kể. Nó cũng có một phụ thuộc rắc rối (xv)
  • Tôi đã không thử tùy chọn gimpupdf
  • Cuối cùng, tôi đã sử dụng Acrobat Reader trong VM vì tôi cũng phải điền vào nhiều hình thức khác nhau

Cảm ơn đã chia sẻ lại. Tôi sẽ kiểm tra kịch bản của bạn. Tôi đã thực sự thành công với Xournal, bạn phải đảm bảo không xuất sang tên tệp gốc vì điều đó có thể gây ra sự cố. Nếu bạn chọn một tên mới để xuất sang (vì vậy bạn không ghi đè lên pdf gốc) thì bạn sẽ tránh được lỗi này.
Freedom_Ben

1

Trình xem PDF Okular có tích hợp này với các chú thích. Mở tệp PDF bạn muốn ký, chọn đánh giá trên thanh bên trái, chọn tùy chọn thứ ba trên menu bật lên có nội dung 'dòng tự do'. Vẽ chữ ký của bạn. Nếu bạn muốn nó có mực đen thay vì màu xanh neon, hãy chọn 'Cài đặt' từ menu, chọn 'Cấu hình Okular', chọn nút 'Chú thích' ở bên trái. Chọn 'Freehand Line' từ các tùy chọn, sau đó chọn nút 'Chỉnh sửa'. Bạn có thể điều chỉnh cả độ dày của đường và màu ở đây. Nhấn Áp dụng và thưởng thức.


0

updf thực sự tốt cho việc này. Đã sử dụng bản xem trước trên MacOS để "ký" tài liệu, updf cung cấp trải nghiệm người dùng gần nhất với điều này.

Các hoạt động sau đây trên Ubuntu 14.10 và Debian 8.

Tôi không muốn thêm ppa của bên thứ ba vào hệ thống của mình, vì vậy, đã có updf chạy theo cách sau:

$ bzr branch lp:updf

sau đó thực hiện chỉnh sửa 2 dòng như được tham chiếu từ câu trả lời khác.

Cài đặt phụ thuộc:

# 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

(những điều trên là đủ; tuy nhiên không phải mọi gói đều cần thiết).

và sau đó chương trình python có thể chạy tại chỗ:

$ ./src/updf.py

Thật không may, chất lượng có thể bị ảnh hưởng nghiêm trọng trong tài liệu đầu ra so với tài liệu đầu vào. Cách đúng đắn để làm điều này là phủ lớp chữ ký, và không thay đổi bản gốc, trong một quy trình không mất mát. Trong khi đó updf dường như tham gia vào việc mã hóa lại bản gốc.


Tôi đã phải thêm python-gi-cairovào các phụ thuộc để làm cho nó hoạt động.
Joma

Joma: cảm ơn; Bây giờ tôi đã thêm python-gi-cairo vào danh sách.
dự án

0

Tôi điều hành một doanh nghiệp và Xournal không có chất lượng hoặc độ rộng kiểm soát đối với các tệp pdf mà tôi cần.

Tôi cũng đang sử dụng hoặc áp dụng chữ ký số mọi lúc.

Master PDF Editor (phiên bản 5 tính đến ngày này) là một ứng dụng trả phí dễ dàng vượt quá mong đợi và hiện là trình đọc pdf mặc định của tôi cho Ubuntu. Tính năng chính: - ký tài liệu - điền vào biểu mẫu - sửa đổi văn bản và đối tượng - chú thích và tô sáng tài liệu - hợp nhất và phân chia tệp pdf - vv

Để biết thêm chi tiết, hãy truy cập: https://code-industry.net/masterpdfeditor/?-about&ver=5438

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.