De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

mpage - impressão ágil em postscript

Colaboração: Aurélio Marinho Jargas

Data de Publicação: 30 de abril de 2021

olás. já se deparou com o dilema de ter que imprimir algumas páginas de texto e acabar recorrendo ao X para fazer isso? ou mandar seu texto direto para o lpr e perceber que ele saiu todo cortado? ou ainda, você tem poucas folhas disponíveis e quer espremer o texto pra caber nelas? seus problemas acabaram!

o mpage é um utilitário de linha de comando presente na maioria das distribuições de linux que converte texto para páginas em postscript, a linguagem que as impressoras entendem, e tem diversas opções úteis que veremos agora.

a sintaxe é simples, sendo o texto convertido jogado na saída padrão e esta pode ser direcionada para o servidor de impressão:

$ mpage [OPÇõES] arquivo.txt | lpr

chamado sem opções, imprime no tamanho A4, com 4 páginas por folha. isso mesmo! quatro páginas colocadas numa só folha. daí o nome do programa "M(ultiple)Page". as opções -1, -2 -4 e -8 definem quantas páginas por folha serão impressas.

para definir o tamanho da folha, caso diferente de A4, a opção -b aceita os parâmetros A3, Letter ou Legal. também podemos mudar a orientação do papel com a opção -l, imprimindo como "paisagem", ou seja, com a folha deitada.

então para imprimir o arquivo de serviços da máquina (que tem mais de 300 linhas) numa só folha tamanho Letter, contendo oito mini-páginas:

$ mpage -8 -b Letter /etc/services | lpr

note que para oito páginas (bem como para duas), a orientação "paisagem" é escolhida automaticamente. adicionando a opção -a, vemos que as páginas são colocadas primeiro preenchendo a largura e depois a altura. e ainda, o -R começa o preenchimento a partir do pé da folha.

todas estas orientações automáticas e preenchimento confundem, então aqui vai uma tabela esperta que resume como ficarão dispostas as páginas. note que "ori." é a orientação, sendo | e - a representação da página: em pé ou deitada.

    n°  ori.  normal      -a          -R          -a e -R
  ---------------------------------------------------------

    1    |    1           1           1           1

    2    -    1 2         1 2         1 2         1 2

    4    |    1 3         1 2         3 4         2 4
              2 4         3 4         1 2         1 3

    8    -    1 3 5 7     1 2 3 4     5 6 7 8     2 4 6 8
              2 4 6 8     5 6 7 8     1 2 3 4     1 3 5 7

sabe esta linha separadora que está desenhada em volta das páginas? você pode tirá-la com a opção -o (de "outline"). e caso você não goste da fonte monoespaçada Courier que é a padrão, pode utilizar outra com a opção -F. eu não aconselho, mas como tem gente que gosta...

$ mpage -8 -o -F Times /etc/services | lpr

outras opçõezinhas que podem ser úteis são o -H ("header") para incluir cabeçalho em todas as páginas (data, nome do arquivo e número da página) e o -s que define o número de espaços em branco que o TAB vai ocupar, o padrão é 8. outra que pode ajudar é o -c que concatena vários arquivos num só. então, num exemplo com cabeçalho, TAB de 4 espaços e juntando dois arquivos, temos:

$ mpage -8 -H -s 4 -c /etc/passwd /etc/services | lpr

calma que se ainda sobrou folhas na sua impressora temos as margens pra brincar. temos o -m para definir as margens da folha e o -M para as margens de cada página. a sintaxe é a mesma para ambas as opções e pode assustar numa primeira olhada.

o tamanho padrão de cada margem é de 20 pontos, ou seja, -m20. note que NÃO podem haver espaços entre a opção e os seus argumentos! para especificar individualmente cada margem, temos as letras identificadoras rltb, sendo:

r (right) direita
l (left) esquerda
t (top) superior
b (bottom) inferior

então -m60rl40t10b define tamanhos de: 60 pontos para margens direita e esquerda, 40 para o topo e 10 para o pé. variando os números das margens pode-se fazer coisas legais como centralizar o texto num quadrado no meio da página. cuidado para não confundir, pois o -m é a margem da folha, então independente se orientação está normal ou em paisagem, o topo é o topo.

mas como papel não é barato e ficar imprimindo cada teste desse também vai gastar tempo e tinta, vamos usar a cabeça, ou melhor, o linux. lembra que o mpage gera um arquivo em postscript para a impressora? então basta pegar um dos bilhares de visualizadores de postscript existentes e ver como ficará a impressão:

$ mpage -8 -H -m60rl40t10b -F Times /etc/services > arquivo.ps
$ meu-visualizador arquivo.ps
$ lpr arquivo.ps

infelizmente, os visualizadores bons são todos para X... o único que conheço pro console é o gs -sDEVICE=vgalib, que vem no pacote do ghostscript (http://www.cs.wisc.edu/~ghost), mas ele apenas lhe dá "uma idéia" de como o arquivo ficará &:) nesse mesmo pacote tem o gv (para eca-X) que quebra o galho.

— este texto pode ser copiado livremente na íntegra ou em parte, desde que indicado o endereço do original: http://aurelio.net/doc/coluna

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Aurélio Marinho Jargas