PDF completo com todas as páginas do Diário Oficial do Estado de Goiás
Publicado por Ademir Ferreira Furtado (última atualização em 11/07/2016)
[ Hits: 2.842 ]
Homepage: diariooficialhoje.com.br
O script foi feito para facilitar a vida de quem precisa baixar diariamente o Diário Oficial do Estado de Goiás. Está simplificado e comentado, contendo a parte essencial e suficiente para o que se propõe. Basta executá-lo no prompt de comando ou chamá-lo em um script shell.
Foi feito para ser executado sem nenhuma dependência externa além da linguagem Perl e dos módulos usados: DateTime, LWP::Simple e CAM::PDF. Estes módulos podem ser instalados facilmente digitando no prompt:
cpan DateTime LWP::Simple CAM::PDF
Caso surja alguma dúvida na instalação dos módulos, consulte esta página: http://www.cpan.org/modules/INSTALL.html
Com os módulos instalados, é só colocar o script para funcionar. Ex.: para baixar o Diário Oficial do dia, basta digitar no prompt de comando:
perl DOEGO.pl
que ele irá baixar todas as páginas do Diário Oficial do dia de hoje e criar um PDF contendo todas elas.
Para baixar o Diário Oficial de outra data, basta digitar (Ex:29/06/2016):
perl DOEGO.pl 29/06/2016
Obs.: é necessário ter a linguagem PERL instalada, verifique o site http://strawberryperl.com/ ,se não estiver usando o Linux.
#!/usr/bin/perl $|=1; # variável que indica para fazer "flush" após cada operação de escrita my $dmy= shift; # recebe a data desejada passado como parâmetro if(defined($dmy)&& $dmy!~/^\d{2}\/\d{2}\/\d{4}$/) { die "Formato de data inválido.\n\nUso: \n\tperl DOEGO.pl dd/mm/aaaa\n"} #verifica o formato da data use DateTime; my $dt=DateTime->now; # recupera a data do sistema $dmy=$dt->dmy("/") unless defined($dmy); # string da data no formato dd/mm/yyyy $dmy=~/^(\d{2})\/(\d{2})\/(\d{4})$/; # captura (com os parênteses) o dia, mes e ano nas variáveis $1,$2 e $3 my $day=sprintf("%02d", $1); # formata a variável com dois dígitos e zeros à esquerda my $mon=sprintf("%02d", $2); my $year=sprintf("%04d", $3); print "Data: $dmy\n"; use LWP::Simple; # módulo para fazer as requisições http de forma simples my $i=1; # variável utilizada para contar as páginas em sequência while ($i>0) { my $pag=sprintf("%03d", $i); if (is_success(getstore("http://www.abc.go.gov.br/arquivos/diariooficial/$year/$mon/$day/".$pag.".pdf",$pag.".pdf"))) { print "pag. $pag (ok)\n" ; # faz a requisição e armazena if ( $i == 1) { # se for a primeira página... use CAM::PDF; $bigpdf = CAM::PDF->new("$pag.pdf"); # a primeira página será a base para anexar os outros pdf } else { my $anotherpdf = CAM::PDF->new("$pag.pdf"); # demais páginas pdf $bigpdf->appendPDF($anotherpdf); # anexadas à primeira } $i++; } else { $i=0 } unlink("$pag.pdf"); # apaga as páginas individuais temporárias } if (defined($bigpdf)) { # se o arquivo foi criado $bigpdf->cleanoutput("DOEGO-$year$mon$day.pdf"); #salva o pdf com todas as páginas system("start DOEGO-$year$mon$day.pdf") if -e "DOEGO-$year$mon$day.pdf"; #no windows esta linha inicia o visualizador padrão para PDF se ele foi criado } else { print "DOEGO de $dmy não disponível!\n" unless -e "DOEGO-$year$mon$day.pdf"; #avisa se o caderno não está disponível }
Descobrir operadora de celular
Tweetin - Poste tweets pelo terminal
Burlando o "Protetor de links" INVERTIDO para download grátis
Nenhum comentário foi encontrado.
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
Arch Linux - Guia para Iniciantes (2)
Problemas ao instalar o PHP (11)
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)