Criando pdf para impressão de livros
Publicado por albert guedes 08/01/2008
[ Hits: 10.179 ]
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"
Crie bash scripts "on-the-fly"
Data e Hora (Observatório Nacional) usando o "Lynx"
Monta Pen-Drive Windows no Linux
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Não to conseguindo resolver este problemas ao instalar o playonelinux (1)
Excluir banco de dados no xampp (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta