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.821 ]

Homepage: diariooficialhoje.com.br

Download 6447.doego.pl




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.

  



Esconder código-fonte

#!/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
}   

Scripts recomendados

Web crawler simples em Perl

Tradutor Babelfish

Baixar o Diário Oficial da União e salvar como um único PDF completo

Tweetin - Poste tweets pelo terminal

SMTP Mass Mail - Enviando e-mails em massa para vários endereços a partir de um servidor SMTP


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts