문자열->PDF 스탬프 도구 구현

문자열->PDF 스탬프 도구 구현

다음을 사용하여 문자열에서 고정 크기 PDF 파일(A4)을 생성하는 작은 쉘 함수를 작성했습니다.gs:

make_stamp() {
file=$1
string=$2
tmp=${file}-small.pdf
gs -o "$tmp" -sDEVICE=pdfwrite -g500x200 \
  -c "/Helvetica findfont 12 scalefont setfont" \
  -c "0 1 0 0 setcmykcolor" \
  -c "0 5 moveto" \
  -c "(${string}) show" \
  -c "showpage"
gs -o "$file" -sDEVICE=pdfwrite -g5950x8420 \
  -c "<</PageOffset [510 20]>> setpagedevice" \
  -f "$tmp"
}

그러나 개선하고 싶은 몇 가지 사항이 있습니다.

  1. 만들 때 단색 배경을 설정하는 방법은 무엇입니까 $tmp?
  2. 을 만들 때 $tmp텍스트 주위에 꼭 맞도록 크기를 자동으로 계산할 수 있습니까? 일부는 pt패딩으로 사용할 수 있습니까?
  3. 이 함수를 한 번만 호출하도록 재정의할 수 있나요 gs?

또는

  • 직접 작동하지 않는 다른 방법이 있습니까 gs? 임프린트 파일은 텍스트여야 하며, 렌더링된 이미지는 좋지 않습니다.

$stamp관심 있는 분들을 위해 다음과 같은 호출에서 이 함수의 출력을 사용합니다 pdftk.

pdftk original.pdf stamp $stamp output stamped.pdf

답변1

저는 최근 PDF "Bates-stamping" 스크립트를 작성한 법적 문제에 연루되었습니다 pdfBatesStamp.sh.

사용법 발췌

# "Bates-stamp" a PDF file with text (only; images aren't supported).  Uses
# ghostscript (ps2pdf) and pdftk.
#
# The output (Bates-stamped) file is put in the same directory, with "_BATES"
# appended to its name, thusly:
#     pdfBatesStamp.sh <FILE>.pdf ==> <FILE>_BATES.pdf
#
# Usage:
#     pdfBatesStamp.sh <FILE>.pdf [PREFIX(def=<FILE>)] [STARTNUM(def=1)]
#     pdfBatesStamp.sh <FILE>.pdf BATESCONFIG=<bates_config_filename>
#
# The <FILE>.pdf name must end in ".pdf".  You can make many more settings
# inline below (you can also set PREFIX and STARTNUM there too if you want).
# The first invocation format above is for the most common case (e.g., for legal
# use).  In the second invocation format, the <bates_config_filename> file can
# contain any of the inline user-settings (below, from PREFIX to EXTRAS,
# inclusive), and they will overwrite the inline settings.  In this way, you can
# write/store special config file settings for special PDFs, without needing to
# modify the inline settings each time.  Runs at ~3 pages/sec.

전체 스크립트는 Pastebin에서 다운로드할 수 있습니다.pdfBatesStamp.sh.

관련 정보