cal2svg gerador de calendários em formato vetorial SVG
Publicado por Hamilton R. Amorim 06/05/2005
[ Hits: 7.598 ]
Homepage: http://www.algorista.tk
Este programinha gera um calendário vetorial que pode ser modificado em qualquer editor vetorial (Sodipodi, Inkscape, OpenOffice, Gimp, ...). Procure na seção de screenshots que eu postei uma tela de exemplo.
Os calendários ficam realmente bonitos.
O script é simples, mas faz o que tem que fazer.
O svg é gerado direto na saida do terminal, então direcione a saida para um arquivo:
$ ./cal2svg 2005 >calend_2005.svg
HRA
#!/bin/bash ano=$1 mes=0 X=0 Y=0 #funcao que gera o calendario efetivamente function desenhaMes() { cal $mes $ano | awk -v M=$mes -v A=$ano -v X=$X -v Y=$Y '{ #aqui monto umas strings bases para concatenar lá embaixo tagB = "</tspan></text> "; align_middle="text-anchor:middle;"; align_end="text-anchor:end;"; align_left="text-anchor:left;"; style="font-family:helvetica;font-size:12px;"; style_pequeno="font-family:helvetica;font-size:7px;"; base = "<text style=\"" style align_end "\""; base_titulo = "<text style=\"" style align_middle "\""; base_subtitulo = "<text style=\"" style_pequeno align_end "\""; baseX = (X * 60) + 20; # esses 20mm extras são a margem esquerda baseY = (Y * 40) + 20; # idem #se for a primeira linha então é a string com o nome do mes, ou seja: titulo if (FNR == 1) { mes = $1 ano = $2 # troca o mes por causa dos acentos que o sodipodi não compreende if (M == 3) { mes = "Março"; } tagA = base_titulo " x=\"" (baseX+17) "mm\" y=\"" (baseY+5) "mm\"><tspan>" print tagA mes " " ano tagB; } else { #aqui é assim: segunda linha (FNR=2) é o subtitulo, as demais linhas são os numeros dom = substr($0, 1, 2); seg = substr($0, 4, 2); ter = substr($0, 7, 2); qua = substr($0, 10, 2); qui = substr($0, 13, 2); sex = substr($0, 16, 2); sab = substr($0, 19, 2); style = base; # troca o Sab por causa do sodipodi que não manja de portugues, de quebra por tres letras if (FNR == 2) { dom = "Dom"; seg = "Seg"; ter = "Ter"; qua = "Qua"; qui = "Qui"; sex = "Sex"; sab = "Sab"; style = base_subtitulo; } tagA1 = style " x=\"" (baseX+5) "mm\" y=\"" (baseY + (FNR * 5)) "mm\"><tspan>"; tagA2 = style " x=\"" (baseX+10) "mm\" y=\"" (baseY + (FNR * 5)) "mm\"><tspan>"; tagA3 = style " x=\"" (baseX+15) "mm\" y=\"" (baseY + (FNR * 5)) "mm\"><tspan>"; tagA4 = style " x=\"" (baseX+20) "mm\" y=\"" (baseY + (FNR * 5)) "mm\"><tspan>"; tagA5 = style " x=\"" (baseX+25) "mm\" y=\"" (baseY + (FNR * 5)) "mm\"><tspan>"; tagA6 = style " x=\"" (baseX+30) "mm\" y=\"" (baseY + (FNR * 5)) "mm\"><tspan>"; tagA7 = style " x=\"" (baseX+35) "mm\" y=\"" (baseY + (FNR * 5)) "mm\"><tspan>"; print tagA1 dom tagB; print tagA2 seg tagB; print tagA3 ter tagB; print tagA4 qua tagB; print tagA5 qui tagB; print tagA6 sex tagB; print tagA7 sab tagB; } }'; } #verifica o parametro if [ -z $1 ] then echo "cal2svg versao 0.1 - hra - algorista@yahoo.com.br" echo "uso: cal2svg <ano>" echo "" echo " <ano> com quatro digitos" echo "" else #header do arquivo SVG echo "<svg width=\"210mm\" height=\"297mm\">" #desenha os 12 meses for ((m=1; $m <= 12; m++)) do mes=$m t=$(( $m - 1 )) Y=$(( $t / 3 )) X=$(( $t % 3 )) echo "<g>" desenhaMes echo '</g>' done #rodape do arquivo SVG echo '</svg>' fi
Baixando e instalando o Asterisk
Backup do banco de dados Postgresql
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - RESUMO DE MSGS COM VIRUS
Identifica contatos do google que necessitam de ajustes para o nono digito telefonico
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
O que esta havendo com o mercado de ti? (9)
Não consigo cadastrar nenhuma conta online (5)
Hotspot Mikrotik nao carrega pagina de login. (0)