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: 3.092 ]
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
}
IPloc - Informações e localização de um determinado endereço IP
Postando mensagem no Facebook com Perl
SMTP Mass Mail - Enviando e-mails em massa para vários endereços a partir de um servidor SMTP
Script para fazer buscas no arquivo de logs do squid
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Assinador JNLP do Site Portal da Nota Fiscal Eletrônica (4)
Warcraft II Remastered no Linux? (3)









