Pular para o conteúdo

Assinatura de documentos PDF em lote via Bash

Na dica de hoje trago uma solução de caráter prático para quem está no trabalho remoto. Em meu emprego tenho que assinar um certo volume de documentos com alguma regularidade, por pura burocracia. Felizmente, posso fazê-lo de forma eletrônica e (muito felizmente) posso fazê-lo sem utilizar o aplicativo da Adobe. O objetivo da dica de hoje é criar um script que assina documentos automaticamente e ainda faz algumas firulas utilizando ferramentas simples como Bash e Inkscape.
Bruno Rafael Santos santosbrc
Hits: 6.576 Categoria: Shell Script Subcategoria: Avançado
  • Indicar
  • Impressora
  • Denunciar

Parte 3: Script Final

Código:

#!/bin/bash
# source files
SOURCE="$HOME/bin/assinatura_automatica";

# collect current date, command expansion for date
data=$(LC_TIME=pt_BR.utf8 date "+%A, %d de %B de %Y (%T)");

# add date into signature file, svg files are in fact xml
sed "s/DATE/$data/" 
"${SOURCE}/source assinatura.svg" 
> "${SOURCE}/assinatura s.svg";

sed "s/DEPT/${1}/" 
"${SOURCE}/assinatura s.svg" 
> "${SOURCE}/assinatura.svg";

# create pdf signature file, using imagemagick library
convert -density 300 
-transparent white 
"${SOURCE}/assinatura.svg" 
"${SOURCE}/assinatura.pdf";

# move the input forward
shift;

# add signature into file, pdftk library
for file in "${@}"; do
    pdftk "${file}" stamp "${SOURCE}/assinatura.pdf" output "${file%pdf}assn.pdf";
done;

exit 0;

O script final é um pouco mais complicado pois coloquei os templates em um diretório separado na minha home de modo que eu possa utilizar o script de qualquer lugar em meu sistema.

A utilização final é:

assinar departamento *.pdf

Isso deve assinar todos os PDFs do diretório em um golpe só.

   1. Introdução e Setup
   2. Produto
   3. Script Final

Python para pesquisadores: material didático

getopts: criando scripts Bash com parâmetros e argumentos personalizáveis

Guia Rápido do Miniconda para Aplicações Científicas - Instalação e Configuração

GNU Parallel: criando atividades em paralelo com shell script

Devo atender? Um ótimo aplicativo para bloquear Telemarketing

ShellBot - Crie Bots para Telegram em Shell Script

Script GitPratico para criar repositórios remotos sem logar no GitHub

Script com muitas utilidades para arquivos e pastas

Desligar servidores quando o nobreak entra na bateria e envio de aviso por e-mail

Relatório do sistema (Shel Script + PHP)

#1 Comentário enviado por fabio em 30/12/2022 - 21:19h
Muito bom! Bash é vida rsrs
#2 Comentário enviado por maurixnovatrento em 01/01/2023 - 18:23h

Isso aí é bom demais. Ótimo artigo.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10
#3 Comentário enviado por adrianoh2 em 04/01/2023 - 09:54h
Excelente solução. Realmente prático! - Vou adaptar para meu uso!
Acredito que exista uma função "estilo ALPHA" para o background do Imagetrick, que pode facilitar problemas com cortes em partes semi-preenchidas da assinatura.
No geral, ele apaga tudo que é branco, e as vezes, nem sempre fica 100%.
Aqui uma solução que pode retirar "aos poucos" o fundo branco, para problemas com assinaturas muito finas, com muitos detalhes, ou que foram erroneamentes cortadas.
Da forma abaixo, você pode ir proporcionalmente.
https://stackoverflow.com/questions/9155377/set-transparent-background-using-imagemagick-and-command...

Valeu, excelente material!



Entrega o teu caminho ao Senhor; confia nele, e ele o fará. - Salmos 37:5
Tava bão, ocê veio, fico mió!
#4 Comentário enviado por santosbrc em 05/01/2023 - 21:53h

[3] Comentário enviado por adrianoh2 em 04/01/2023 - 09:54h

Excelente solução. Realmente prático! - Vou adaptar para meu uso!
Acredito que exista uma função "estilo ALPHA" para o background do Imagetrick, que pode facilitar problemas com cortes em partes semi-preenchidas da assinatura.
No geral, ele apaga tudo que é branco, e as vezes, nem sempre fica 100%.
Aqui uma solução que pode retirar "aos poucos" o fundo branco, para problemas com assinaturas muito finas, com muitos detalhes, ou que foram erroneamentes cortadas.
Da forma abaixo, você pode ir proporcionalmente.
https://stackoverflow.com/questions/9155377/set-transparent-background-using-imagemagick-and-command...

Valeu, excelente material!



Entrega o teu caminho ao Senhor; confia nele, e ele o fará. - Salmos 37:5
Tava bão, ocê veio, fico mió!



Eu sofri bastante para achar esse comando. Deve ter sim uma solução melhor no ImageMagick. Coloquei a assinatura em um fundo diferente para evitar este tipo de problema, isso evita que o ImageMagick peque tudo de forma indiscriminada.
#5 Comentário enviado por CerberusBH em 13/01/2023 - 09:16h
Excelente! Meus parabéns!
Salvei nos meus favoritos!

Contribuir com comentário

Entre na sua conta para comentar.