você está aqui: Home  → Arquivo de Mensagens

Livros no formato A5 - Economize folhas imprimindo 4 páginas em uma folha A4

Colaboração: Carlos J.

Data de Publicação: 20 de Março de 2006

A idéia abaixo surgiu quando quis imprimir um livro em A5 (A5 é metade de uma A4 que é a folha que se compra normalmente na papelaria e a impressora usa).

Como A5 é metade da A4, é possível imprimir 4 páginas do livro usando apenas uma folha A4, o que é bem econômico. Um livro de 100 páginas usaria 25 páginas A4 apenas (frente e verso).

Mas há um problema: na hora de agrupar as folhas em 2 e imprimir, acaba saindo errado. Por exemplo, de um lado imprime as páginas 1 e 2, do outro, 3 e 4. Se eu dobrar esse papel, a página 3 fica atrás da página 1. O desejável é que a página 2 fique atrás da página 1. Se mandar imprimir apenas as páginas ímpares e agrupar em 2 folhas por página, vão sair as páginas 1 e 3 na frente e 4 e 2 no verso, por causa da ordem do agrupamento.

É frustante a ordem sair ao contrário do que se espera

Confesso que é um caso bem específico, mas ainda assim foi um dificuldade.

Com um software que se encontra na internet (http://www.freshmeat.net ajuda), o joinPDF, é possível quebrar o PDF e reordenar as páginas de uma forma que, quando agrupadas, a impressão saia na ordem correta (frente: página 1, verso: página 2)

Segue o script que me ajudou a tornar isso possível:

  #!/bin/sh
  
  #
  #  Reordena um arquivo PDF em A5 para poder virar um livro
  #  a ser impresso em A4. No final, basta imprimir as páginas
  #  ímpares e no verso as pares do arquivo final.
  #
  
  if [ "X$1" == "X" -o "$1" == "-h" -o "$1" == "--help" ]; then
  echo "Uso: $0 <arquivo pdf> [arquivo saida]"
  exit
  fi
  
  if [ ! -f "$1" ]; then
  echo "Arquivo $1 não existe."
  exit
  fi
  
  a=`/usr/bin/splitPDF "$1" | wc -l `
  
  # Há 1 entrada q não se referem à página gerada.
  sizeA=$(( $a - 1 ))
  
  if [ $(( $sizeA % 4 )) != 0 ]; then
  echo -e "Aviso: arquivo não contêm número de páginas divisível por 4
           Pode sair errado o ordenamento das folhas
  	 Favor gerar, mesmo em bran co, as páginas restantes."
  fi
  
  cont=0;
  start=-2
  
  arrCfg[0]=3
  arrCfg[1]=2
  arrCfg[2]=1
  arrCfg[3]=-2
  
  joinStr=""
  
  arqName=`basename $1 .pdf`
  
  while [ $cont -lt $sizeA ];
  do
  # A ordem das páginas deve ser 1 e 3 na 1a folha e 4 e 2 no verso,
  # para que quando cortadas, fique 1 e 2, 3 e 4.
  # A sequência das folhas a serem juntadas seria:
  # 1,3,4,2, 5,7,8,6, 9,11,12,10, ...
  #
  # Resolvi o problema obtendo a diferença entre os elementos.
  # o q gera um ciclo de 4 estágios (+3, +2, +1, -2).
  #
  
  start=$(( $start + ${arrCfg[ $(( $cont % 4 )) ]} ))
  
  joinStr="$joinStr ${arqName}_page${start}.pdf"
  
  cont=$(( $cont + 1 ))
  done
  
  if [ "X$2" == "X" ]; then
  arqFinal="${arqName}_final.pdf";
  echo "Arquivo de saída não especificado, assumindo $arqFinal"
  else
  arqFinal=$2;
  fi
  
  arqName="__$arqName"
  
  /usr/bin/joinPDF $arqName $joinStr > /dev/null
  
  rm -f $joinStr
  
  pdftops -paper match $arqName - | psnup -q -pa4 -Pa5 -2 | ps2pdf -sPAPERSIZE=a4 - $arqFinal
  
  rm -f $arqName


Veja a relação completa dos artigos de Carlos J.

 

 

Opinião dos Leitores

marcio
18 Ago 2013, 12:33
Resolva tudo isso gratuitamente no linux instalando o "Bookletimposer".
Para usuarios de Debian, e seus similares, como Ubuntu, baixe
http://packages.debian.org/fr/sid/all/bookletimposer/download
Isadora
05 Dez 2012, 10:38
Na vdd eu queria saber usar isso sim, pq o adobe, pra vc imprimir numa folha do 1 ao 4 numa folha, do 5 ao 8 em outra, do 9 ao 12 em outra e por ai vai, dá um trampo absurdo =/
so q n sei como usar isso no win
:(
Josue
10 Mar 2011, 18:08
Eita! Pra quê todo o trabalhão?
Em praticamente todos os programas de texto (inclusive o Adobe Reader) possui em sua opção de impressão algo como: livreto!
Daí ele ordena as páginas de forma que saem já preparadas para apenas cortar
Abraço
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script