PDFBox - Aplicativo Java para baixar o DOU completo

O DOU - Diário Oficial da União - é um periódico muito importante, que divulga informações valiosas para os profissionais da área de consultoria, advocacia e contabilidade, como Legislação, por exemplo. Vamos baixar o DOU da forma que normalmente seria possível e, depois, usar essa API para juntar os arquivos PDF baixados em um único arquivo.

[ Hits: 15.020 ]

Por: Pedro Ferrarezi em 20/11/2013


Introdução / Projeto



Introdução

Fala, galera do VOL.

Estamos por aqui novamente, com mais uma publicação. Dessa vez, vamos montar um aplicativo Java SE com a IDE NetBeans inspirada no script Perl do Ademir Ferreira Furtado disponível aqui.

Obrigado, Ademir.

O problema: o DOU, Diário Oficial da União, é um periódico muito importante, que divulga informações valiosas para os profissionais da área de consultoria, advocacia e contabilidade, como legislação, por exemplo.

Acontece que a ferramenta disponibilizada no endereço portal.in.gov, não permite download do arquivo completo do DOU, só é possível baixar página por página.

Nesse sentido, alguns escritórios de advocacia têm até contratado programadores ou mobilizado seu setor de TI para que se possa obter o DOU mais facilmente, pois, nessas empresas, esse periódico é lido diariamente por profissionais.

O script do Ademir faz o download do DOU completo, com muita tranquilidade. Eu mesmo testei no Debian e funcionou sem problemas. Acontece que nem todo mundo vai conseguir implementar Perl na sua máquina de trabalho, para poder beneficiar-se desta ferramenta.

Gostaria de deixa claro que, sem o script do Ademir, eu não faria esse tutorial, pois a ideia surgiu quando implementei ele.

A solução: a biblioteca PDFBox é uma ferramenta Java de código aberto para trabalhar com documentos PDF. Essa API permite a criação de novos documentos PDF, manipulação de documentos existentes e a capacidade de extrair o conteúdo de documentos.

Vamos baixar o DOU da forma que normalmente seria possível, e depois, usar essa API para juntar os arquivos PDF baixados em um único arquivo.

Iniciando o projeto

Neste artigo, não vou falar sobre como instalar o NetBeans. Se você não sabe o que é isso ou usa outra IDE Java, veja aqui: ...e se encontrar problemas, veja os posts aqui do VOL da galera que já "bateu cabeça".

Partindo do principio que você tem o NetBeans instalado e funcionando, inicie um novo projeto como abaixo, desmarque a opção criar classe principal:
Linux: PDFBox - Aplicativo Java para baixar o DOU completo

Faça download do JAR do PDFBox e salve em uma pasta de sua preferência.

Adicione a biblioteca ao projeto. Crie um pacote chamado pacote1 a adicione um formulário JFrame a ele. Sugiro nomear o JFrame de frame.

Adicione 3 JPanels, 2 JTextFields, 6 JCheckBoxes, 2 JButtons, 3 JLabels, 1 JProgressBar e formate os componentes, conforme abaixo:
Linux: PDFBox - Aplicativo Java para baixar o DOU completo

Para termos mais facilidade na hora de implementar o código Java em si do projeto, sugiro você ir adicionando e formatando os componentes na sequência, de forma que fiquem com os nomes padrão e dispostos na sequência em que foram adicionados ao JFrame.

Depois de adicionados e formatados os componentes visuais, vá até o código fonte do projeto e deixe-o com os imports abaixo:
  • import   java.io.BufferedInputStream;
  • import   java.io.BufferedReader;
  • import   java.io.File;
  • import   java.io.FileInputStream;
  • import   java.io.FileOutputStream;
  • import   java.io.InputStream;
  • import   java.io.InputStreamReader;
  • import   java.net.HttpURLConnection;
  • import   java.net.URL;
  • import   java.util.ArrayList;
  • import   java.util.List;
  • import   javax.swing.JFileChooser;
  • import   javax.swing.JOptionPane;
  • import   javax.swing.SwingWorker;
  • import   org.apache.pdfbox.util.PDFMergerUtility;

    Próxima página

Páginas do artigo
   1. Introdução / Projeto
   2. Codificação final
Outros artigos deste autor

Monitorando produtos no ML com Python 3 via BeautifulSoup

Leitura recomendada

Linux + Rails + Ruby + Mongrel + PostgreSQL + NetBeans 6 Preview

Trabalhando com classes e métodos em Java (parte 2)

Java Native Interface

Desenvolvendo aplicações Web 2.0 com Java e AJAX (FrameWork DWR)

Redirecionamento de páginas e domínios com Jetty Rewrite Handler

  
Comentários
[1] Comentário enviado por izaias em 20/11/2013 - 14:33h

Chatinho pra configurar.
Mas depois, vai! E muito bem.

Facilitou a vida!

[2] Comentário enviado por Lisandro em 21/11/2013 - 07:24h

Gostei muito. Valeu!

[3] Comentário enviado por Buckminster em 02/12/2013 - 01:52h

Muito bom. Parabéns.

Vou testar.

[4] Comentário enviado por leorocco em 12/02/2014 - 15:23h

Muito obrigado!!!

Porém, ao clicar no botão para baixar o DOU recebo o seguinte erro no console:

java.io.FileNotFoundException: http://portal.in.gov.br/visualiza/index.jsp?jornal=1&pagina=1&data=14/10/2013
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1624)


tem alguma coisa errada com o código ou eles mudaram algum parâmetro para visualizar as páginas?

Valeu! :)

[5] Comentário enviado por leorocco em 17/02/2014 - 15:00h

Eles mudaram a URL da página. Resolvei o problema alterando a variável "Link". Porém os PDFs estão vindo corrompidos, impossível de visualizar. Estou usando a versão 1.8.3 do PDFBox. Será que é isso? Muito obrigado por compartilhar :]

[6] Comentário enviado por Alexsander71 em 16/01/2015 - 17:42h


Está muito TOP !! Mas queria uma ajudinha mais... Preciso baixar o DOU de um período, tipo... queria baixar todos os DOU do mês de NOV / 2014. Alguém pode dar uma ajuda!?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts