My favorites | Sign in
Project Home Downloads Wiki Issues Source
Checkout   Browse   Changes    
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# ----------------------------------------------------------------------------
# Combina 2 arquivos, frentes.pdf e versos.pdf, em um único frenteverso.pdf.
# Opções:
# -rf, --frentesreversas informa ordem reversa no arquivo frentes.pdf.
# -rv, --versosreversos informa ordem reversa no arquivo versos.pdf.
# -d, --diretorio informa o diretório de entrada/saída. Padrao=".".
# -v, --verbose exibe informações de debug durante a execução.
# Uso: zzfrenteverso2pdf [-rf] [-rv] [-d diretorio]
# Ex.: zzfrenteverso2pdf
# zzfrenteverso2pdf -rf
# zzfrenteverso2pdf -rv -d "/tmp/dir_teste"
#
# Autor: Lauro Cavalcanti de Sa <lauro (a) ecdesa com>
# Desde: 2009-09-17
# Versão: 20101222
# Licença: GPLv2
# Requisitos: pdftk
# ----------------------------------------------------------------------------
zzfrenteverso2pdf ()
{
zzzz -h frenteverso2pdf "$1" && return

# Declara variaveis.
local n_frentes n_versos dif n_pag_frente n_pag_verso
local sinal_frente="+"
local sinal_verso="+"
local dir="."
local arq_frentes="frentes.pdf"
local arq_versos="versos.pdf"
local ini_frente=0
local ini_verso=0
local numberlist=""
local n_pag=1

# Determina o diretorio que estao os arquivos a serem mesclados.
# Opcoes de linha de comando
while [ $# -ge 1 ]
do
case "$1" in
-rf | --frentesreversas) sinal_frente="-" ;;
-rv | --versosreversos) sinal_verso="-" ;;
-d | --diretorio)
[ "$2" ] || { zztool uso frenteverso2pdf; return 1; }
dir=$2
shift
;;
-v | --verbose)
set -x
;;
*) { zztool uso frenteverso2pdf; set +x; return 1; } ;;
esac
shift
done

# Verifica se os arquivos existem.
if [ ! -s "$dir/$arq_frentes" -o ! -s "$dir/$arq_versos" ] ; then
echo "ERRO: Um dos arquivos $dir/$arq_frentes ou $dir/$arq_versos nao existe!"
return 1
fi

# Determina o numero de paginas de cada arquivo.
n_frentes=`pdftk "$dir/$arq_frentes" dump_data | grep "NumberOfPages" | cut -d" " -f2`
n_versos=`pdftk "$dir/$arq_versos" dump_data | grep "NumberOfPages" | cut -d" " -f2`

# Verifica a compatibilidade do numero de paginas entre os dois arquivos.
dif=`expr $n_frentes - $n_versos`
if [ $dif -lt 0 -o $dif -gt 1 ] ; then
echo "CUIDADO: O numero de paginas dos arquivos nao parecem compativeis!"
fi

# Cria ordenacao das paginas.
if [ "$sinal_frente" = "-" ] ; then
ini_frente=`expr $n_frentes + 1`
fi
if [ "$sinal_verso" = "-" ] ; then
ini_verso=`expr $n_versos + 1`
fi

while [ $n_pag -le $n_frentes ] ; do
n_pag_frente=`expr $ini_frente $sinal_frente $n_pag`
numberlist="$numberlist A$n_pag_frente"
n_pag_verso=`expr $ini_verso $sinal_verso $n_pag`
if [ $n_pag -le $n_versos ]; then
numberlist="$numberlist B$n_pag_verso"
fi
n_pag=$(($n_pag + 1))
done

# Cria arquivo mesclado.
pdftk A="$dir/$arq_frentes" B="$dir/$arq_versos" cat $numberlist output "$dir/frenteverso.pdf" dont_ask

}

Change log

r710 by aureliojargas on Mar 29, 2012   Diff
SEGURANÇA: $1 colocado entre aspas na
chamada padrão zzzz -h de todas as
funções.
Go to: 
Sign in to write a code review

Older revisions

r668 by aureliojargas on Mar 28, 2012   Diff
lint: removendo espaços inúteis.
r540 by aureliojargas on May 24, 2011   Diff
COMBO: Removidos espaços e tabs
inúteis do fim das linhas, verificados
por utils/alinhamento
r524 by aureliojargas on May 23, 2011   Diff
COMBO: Agora todas as chamadas ao
zztool uso por falha na verificação
dos parâmetros possuem um return 1
depois. Assim outros scripts que usam
as funções podem detectar erros.
All revisions of this file

File info

Size: 2913 bytes, 92 lines
Powered by Google Project Hosting