Criando pdf para impressão de livros
Publicado por albert guedes 08/01/2008
[ Hits: 10.483 ]
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"
Instalar NetBox (container) em CentOS 7
Instalação do Ubuntu com Criptografia Total
Script para conversão do OpenOffice para a lingua portuguesa (pt-BR) a partir do BrOffice
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Pergunta: Meu teclado não está respondendo direito como e consertar? (2)
Secure boot, artigo interessante, nada técnico. (6)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (0)









