Criando pdf para impressão de livros
Publicado por albert guedes 08/01/2008
[ Hits: 10.199 ]
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"
Montando compartilhamento de máquinas Windows no Linux
Convertendo man pages em arquivos pdf
Compac.sh - Compactador de arquivos
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (6)