Implementando uma string - Ferramenta PDF Stamp

4

Eu escrevi uma pequena função de shell que cria um arquivo PDF de tamanho fixo (A4) a partir de uma string de caracteres usando 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"
}

No entanto, há algumas coisas que eu gostaria de melhorar:

  1. ao criar $tmp , como defino uma cor sólida de plano de fundo?
  2. ao criar $tmp , é possível ter o tamanho calculado automaticamente para ficar bem ao redor do texto, talvez com alguns pt como preenchimento?
  3. é possível reescrever esta função para chamar apenas gs uma vez?

ou

  • existe outra maneira de fazer isso que não usa gs diretamente? O arquivo de carimbo deve ser textual, uma imagem renderizada não é boa.

Para quem estiver interessado, eu uso a saída desta função $stamp em uma chamada para pdftk assim:

pdftk original.pdf stamp $stamp output stamped.pdf
    
por fommil 10.09.2012 / 18:17

1 resposta

1

Recentemente, me envolvi em um assunto jurídico, para o qual escrevi um script em PDF "Bates-stamping", pdfBatesStamp.sh .

trecho de uso

# "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.

Script completo disponível para download em pastebin, pdfBatesStamp.sh .

    
por 17.02.2014 / 15:27