Criando pdf para impressão de livros
Publicado por albert guedes 08/01/2008
[ Hits: 10.592 ]
Homepage: https://teko.net.br
Para aqueles que estavam desesperados por um modo de imprimir seus livros sem gastar toneladas de papel e piscinas inteiras de tinta para impressão, publico agora um script para criar um arquivo pdf prontinho para imprimir.
Só é preciso abrir o leitor de pdf e mandar imprimir frente e verso, mais nada.
O script era para minha própria nescessidade, mas muitos scripts que eu li na net não eram completos o que me fez meter a mão na massa e criar este script graças ao pacote de programas pdfjam.
#
# Script para imprimir 4 páginas em uma folha de papel,
# com duas páginas em cada lado da folha.
# Ideal para impressão de livro e economizar.
#
# Críticas e sugestões, escreva para: arcguede@gmail.com
#
#
# NOTA: É nescessário os seguintes programas instalados no seu sistema:
# pacote pdfjam: pdfnup, pdf90 e pdfjoin.
# pacote tex: latex, dvipdf
# pacote xpdf: pdfinfo
#
#!/bin/bash
# Pega o nome do arquivo.
FILE=$1
# Pega o nome do diretório atual.
DIR=$(pwd)
# Pega o número de páginas do arquivo.
PAGES=$( pdfinfo $FILE | grep Pages | cut -d' ' -f11- )
# Separa as páginas do arquivo uma por uma.
for((i=1;i<=$PAGES;i++))
do
pdfnup --nup 1x1 --pages $i --outfile /tmp/page$i.pdf $FILE
done
cd /tmp
# Calcula a página do meio.
MEAN=$(($PAGES/2))
# 'FLAG' é para indicar o sentido de rotação das páginas.
FLAG=0
for((i=1;i<=$MEAN;i++))
do
# 'i' é pagina que fica a direita da folha, e 'j' a da esquerda.
j=$((2*$MEAN-$i+1))
if [ $FLAG -eq 0 ]
then
# Junta duas páginas em um arquivo.
pdfjoin page$j.pdf page$i.pdf --outfile page$i+$j.pdf
rm page$i.pdf page$j.pdf
# Junta duas páginas em uma só folha.
pdfnup page$i+$j.pdf --outfile pagen$i+$j.pdf
rm page$i+$j.pdf
# Como a 'FLAG' é 0, a rotação é em sentido horário.
pdf90 pagen$i+$j.pdf --outfile A.pdf
pdf90 A.pdf --outfile B.pdf
pdf90 B.pdf --outfile pager$i+$j.pdf
rm pagen$i+$j.pdf A.pdf B.pdf
FLAG=1
else
# Junta duas páginas em um arquivo.
pdfjoin page$i.pdf page$j.pdf --outfile page$i+$j.pdf
rm page$i.pdf page$j.pdf
# Junta duas páginas em uma só folha.
pdfnup page$i+$j.pdf --outfile pagen$i+$j.pdf
rm page$i+$j.pdf
# Como a 'FLAG' é 1, a rotação é em sentido anti-horário.
pdf90 pagen$i+$j.pdf --outfile pager$i+$j.pdf
rm pagen$i+$j.pdf
FLAG=0
fi
done
# Caso o número de páginas seja impar, vai sobrar uma última página.
[ $(($PAGES-2*$MEAN)) -eq 1 ] && {
# Nesta parte, caso exista um número impar de páginas, irá sobrar uma no final.
# Por isso, é criado uma folha de PDF em branco e juntado a pagina que sobrou.
echo "\documentclass[12pt,a4paper]{article}\begin{document}\end{document}" > blank.tex
latex blank.tex
dvipdf blank.dvi blank.pdf
pdfjoin blank.pdf page$PAGES.pdf --outfile pagej$PAGES.pdf
rm blank*
# # #
# Junta as duas páginas, a branca e o resto, em uma folha só.
pdfnup --nup 2x1 pagej$PAGES.pdf --outfile pagen$PAGES.pdf
rm page$PAGES.pdf blank*.pdf
# Rotaciona em sentido anti-horário.
pdf90 pagen$PAGES.pdf --outfile pager$PAGES.pdf
rm pagen$PAGES.pdf
}
# Junta tudo num arquivo só.
pdfjoin --outfile A.pdf pager*+*.pdf
pdfjoin --outfile $DIR/output.pdf A.pdf pager$PAGES.pdf
rm A.pdf pager$PAGES.pdf pager*+*.pdf
echo -e "\n\n Pronto !\n\n"
Escrever números, datas, horas e outros por extenso
arcade.sh - front-end para AdvanceMAME
SSH - Detecta ataque por brute force e bloqueia o IP do atacante.
Papagaiando o XFCE com temas e recursos
WhatsApp com Chamadas no Linux via Waydroid
XFCE - quase um Gnome ou Plasma mas muito mais leve
LXQT - funcional para máquinas pererecas e usuários menos exigentes
Atualizações de Segurança Automáticas no Debian
Como cortar as partes de um vídeo com passagens de áudio em branco
Tiling automático no KDE Plasma
SNMP Scan no OCS Inventory só funciona com HTTPS corretamente configurado
Alguém tem que acabar com ANATEL!!! (0)
GOG confirma suporte oficial ao sistema Linux: "o trabalho começo... (4)









