cal2svg - brincando com shell script e arquivos vetoriais SVG
Este artigo é na verdade uma apresentação de um programinha que fiz que gera calendários em formato SVG. É um shell script bem simples, mas que faz o que promete. E a idéia fica no ar, possivelmente o SVG seja um bom formato para gerar muitas coisas via shell script, pois é fácil de usar e com resultados surpreendentes. Conheça o formato SVG e comece a usar desde já!
A idéia
Já faz um tempo que estou querendo desenvolver um programinha que gere
calendários personalizáveis. Tentei com Delphi e PHP, mas definitivamente a
melhor solução que consegui foi com a simples combinação Bash + awk + cal, ou
seja, shell script puro.
Com Delphi eu gerava uma imagem que depois importava no GIMP e melhorava, mas não tinha como mudar fontes e outras coisas. Tinha que programar tudo, era muito chato ficar criando os efeitos no Delphi.
Com PHP eu gerava HTML, cheio de tabelas, mas depois acabava que os editores de texto não importavam o layout corretamente. Enfim, não ficava modificável.
Foi então que (por acidente) percebi que o padrão de desenhos vetoriais SVG é um XML em texto puro - maravilha. Dei uma estudada nos arquivos salvos pelo Sodipodi (e Inkscape) e montei esse script que gera calendários totalmente personalizáveis.
O arquivo SVG gerado pelo Sodipodi dá um pouco de medo no inicio. Parece uma linguagem alienígena, mas olhando mais atentamente fica claro o que realmente importa naquele amontoado de coisas. Com alguns testes logo montei um arquivo bem enxuto, com apenas 3 linhas e menos de 50 bytes, um arquivinho bem didático, só pra testes mesmo:
<svg>
<text x="10mm" y="20mm"> meu texto de teste </text>
</svg>
<text x="10mm" y="20mm"> meu texto de teste </text>
</svg>
Fui montando outros testes com mais recursos como alinhamento e fonte, tudo com uma técnica muito simples: gerar a formatação no Sodipodi e ver num editor de textos como foi que ficou o arquivo. Técnica rápida e eficaz.
Existe na Internet vasta informação sobre como gerar SVG, mas não tenho Internet em casa e no trabalho não sobra tempo pra estudar. Então restou improvisar.
O resultado foi fantástico. Percebi que estava perdendo tempo ao tentar gerar material visual em outros formatos. O SVG é perfeito pra esse tipo de coisa. A vantagem de gerar no formato vetorial é que o resultado é livre para ser modificado. Pode mudar fonte, tamanho, aspecto, cor, tudo. Inclusive pode gerar o arquivo num editor de textos, como se fosse um HTML.
Clique para ampliar
O trabalho do script fica por conta de te poupar do tédio de precisar digitar cada número (cada dia do ano) e por na posição adequada.
Esse calendário do screenshot eu fiz em menos de 5 minutos e ainda precisei acertar a posição dos meses.
Páginas do artigo
1. A idéia2. O shell script
3. Concluindo, possibilidades
Outros artigos deste autor
A miséria social do Brasil e o software proprietário
Como fazer: chroot SSH (SSH mais seguro)
Porque tanta gente não usa o Linux? Será que o Linux é ruim mesmo?
Leitura recomendada
Script GitPratico para criar repositórios remotos sem logar no GitHub
Script com muitas utilidades para arquivos e pastas
Receba seu IP externo via e-mail ou ensine o bash a ler e enviar e-mails
Gerar músicas aleatórias com YAD (Modo Gráfico)
getopts: criando scripts Bash com parâmetros e argumentos personalizáveis
Comentários
Belo artigo: objetivo bem escrito e com ferramentas acessíveis e funções comuns para algo diferente.Parabéns!
Meus parabéns Hamilton!
Bem, como você comentou que tem dificuldade para acessar a internet vou deixar aqui umas dicas pra você não perder tempo procurando. ;-)
A Especificação do formato SVG:
http://www.w3.org/TR/SVG11/
Veja também a página sobre SVG na W3C:
http://www.w3c.org/Graphics/SVG
No Croczilla você vai ver outras viajens legais com SVG:
http://www.croczilla.com/svg/
Gostei do seu artigo e linquei nesses sítios onde colaboro com conteúdo:
http://twiki.softwarelivre.org/bin/view/Arte/SVG
http://twiki.im.ufba.br/bin/view/PSL/SVG
Hasta!
Aurium
Bem, como você comentou que tem dificuldade para acessar a internet vou deixar aqui umas dicas pra você não perder tempo procurando. ;-)
A Especificação do formato SVG:
http://www.w3.org/TR/SVG11/
Veja também a página sobre SVG na W3C:
http://www.w3c.org/Graphics/SVG
No Croczilla você vai ver outras viajens legais com SVG:
http://www.croczilla.com/svg/
Gostei do seu artigo e linquei nesses sítios onde colaboro com conteúdo:
http://twiki.softwarelivre.org/bin/view/Arte/SVG
http://twiki.im.ufba.br/bin/view/PSL/SVG
Hasta!
Aurium
Não entendi nada
show de bola