Sexta-feira, 16 Novembro 2007

Ler arquivos do office com Java

Dicas

No passado existiu uma situação no projeto, em que existiam vários documentos de projeto (guia, arquitetura, requisitos, manual, etc.), vindo de diferentes fontes (diretório de backup, cdrom), e são documentos office (doc, xls, ppt), e vários documentos repetidos, mas de origens diferentes.

Então como saber qual é o último arquivo e remover os antigos ?

Uma maneira é abrir cada arquivo e olhar nas propriedades do mesmo, mas fazer isso manualmente com cerca de 300 arquivos, poxa não sou mais estagiário para isso :-D (nada contra os estagiários).

Então fiz um programa em java, que usa a API SDK do OpenOffice para ler estas propriedades e mostrar as datas da última modificação e o autor.

Claro que é possível usá-lo para ler qualquer outra propriedade ou expandir para outros usos.

Atualmente a pesquisa é efetuada nos seguintes arquivos com extensão: sxw doc xls odt ods pps odt odp ppt 

Altere o DocViewer.java para adicionar outras extensões. 

Faça o download do código fonte: DocViewer.java
(remova a extensão .txt)

Requerimentos: 

Em tempo de compilação é necessário as seguintes bibliotecas:

$OO_HOME/program/classes/juh.jar
$OO_HOME/program/classes/jurt.jar
$OO_HOME/program/classes/jut.jar
$OO_HOME/program/classes/ridl.jar
$OO_HOME/program/classes/unoil.jar

A variável OO_HOME aponta para o diretório de instalação do OpenOffice. No meu caso uso o BrOffice, que está instalado em /opt/broffice.org2.3

Em runtime:

  • Instalação do OpenOffice
  • X Virtual Frame Buffer (Xvfb)
  • Java (testei com a versão 5)

Compilação

Essa parte é simples, use sua IDE favorita ou o javac

javac -classpath /opt/broffice.org2.3/program/classes/\* src/claudius/DocViewer.java

Usei o classpath wildcards, válido apenas para o Java 6

Uso

Para colocar o openoffice em modo servidor, usei um servidor X virtual, isso é para ambiente servidor, onde não é necessário ter um monitor nem interface gráfica. No caso foi instalado o X Virtual Frame Buffer.

Se não puder instalar um servidor X virtual e iniciar a aplicação openoffice manualmente, tudo bem, basta não informar qual o servidor X a ser usado. Veja o exemplo abaixo:

Com servidor X virtual 

Xvfb :5 -screen 0 800x600x16 & 
/opt/broffice.org2.2/program/soffice -accept="socket,host=127.0.0.1,port=8100;urp;" -display :5 -headless -norestore -invisible &

Sem servidor X virtual

/opt/broffice.org2.2/program/soffice -accept="socket,host=127.0.0.1,port=8100;urp;" -headless -norestore -invisible &

Invocar o programa Java

A sintaxe para invocar é

java -classpath $CP claudius.DocViewer <path do arquivo ou diretório>

O classpath $CP é o mesmo usado na compilação, em adição ao diretório da classe DocViewer compilada.
O path, pode ser um arquivo único ou diretório, que neste último caso irá pesquisar nos subdiretórios também. 

Exemplo 

java -classpath build/classes/:/opt/broffice.org2.3/program/classes/\* claudius/DocViewer arquivo-projeto.odt

O resultado:

dir  = /home/claudio/resources/palestras/2007/10_justjava
file = diagnostico2.odp
Modified by: Claudio Miranda 5/10/2007 17:46:8

Se essa dica foi útil para você, deixe uma mensagem comentando como isso lhe ajudou.

Escrito por claudio at 3:36 PM categorizado por Java

Tags: dicas java linux

Quarta-feira, 14 Novembro 2007

Palestra "Performance em Aplicações Java" disponível

A palestra que ministrei no evento Conexão Java 2007 está disponível para download. Ou você pode assistir on-line à apresentação.

Nesta palestra coloquei mais algumas dicas de performance em Java, bem como houve uma sessão de QA ao final.

Quero agradecer à organização do evento pela oportunidade e à galera que aguentou firme 1,5h de assunto um tanto pesado.

Escrito por claudio at 5:20 AM categorizado por Java

Tags: java noticias palestra performance

Sábado, 10 Novembro 2007

450 GB de HEAP

Conversei com alguns colegas sobre um artigo que li há um tempo, onde mostrava que o BEA JRockit foi usado em um heap da ordem de terabytes.

Pois eu confundi, e o heap é de 450 GB. Vejam o artigo

Escrito por claudio at 8:14 PM categorizado por Java

Tags: java performance

Quinta-feira, 8 Novembro 2007

Slides das palestras do JustJava 2007, disponíveis para download

Dicas

Os slides das palestras do JustJava 2007, estão disponíveis para download.

Estão em diferentes formatos, PDF, OpenOffice e PowerPoint.

Recebemos uma avalanche de pedidos para acesso aos slides, finalmente eles estão disponíveis.
 

Escrito por claudio at 12:09 PM categorizado por SouJava

Tags: eventos java justjava noticias soujava

Quarta-feira, 7 Novembro 2007

Conversão de charset para UTF-8, modo gráfico

Dicas

Segue uma maneira fácil de converter arquivos ou nome de arquivos para UTF-8. Um exemplo é quando copia-se arquivos acentuados em windows para linux, o nome de arquivo não é convertido, ficando um nome ilegível. Então deve-se converter o nome do arquivo para UTF-8.

Na dica anterior, foi mostrado como modificar o conteúdo do arquivo para UTF-8. O uso da ferramenta konwert por linha de comando é útil quando se tem muitos arquivos a serem verificados. Quando se tem poucos arquivos e estão visíveis na interface gráfica, torna-se mais prático usar alguns cliques para resolver isso.

Então a dica fica com o uso de um script específico para o Konqueror (KDE) que abre um menu de contexto com opções de conversão. O script é o ToUTF-8, encontrado no kde-apps.org, as instruções de instalação estão no site.

Requisitos

  • Linux
  • KDE
  • Konqueror
  • recode

Eu uso o gerenciador de arquivos krusader, que acho bem mais prático do que o konqueror.

Clique na imagem abaixo, para ver como ele funciona. 

Clique na imagem para ampliar

Escrito por claudio at 5:26 PM categorizado por Dicas e Scripts

Tags: linux dicas

Terça-feira, 6 Novembro 2007

Computador do Maltron

Revelado, qual é o computador do Maltron, onde ele aprendeu todas as técnicas Java, Mobile, e Kendo (on-line)

Computador do Maltron

Escrito por claudio at 1:31 AM categorizado por Fotolog

Tags: diversao

Segunda-feira, 5 Novembro 2007

Conversão de charset para UTF-8

Em ambientes de desenvolvimento heterogêneos, onde existem diferentes sistemas operacionais e IDEs, é comum encontrar problemas de caracteres com encoding diferentes, como ISO-8859-1, UTF-8, etc.

No projeto que trabalho atualmente, existem windows e linux (por enquanto não tem apple), então é comum existirem arquivos com ISO-8859-1, ASCII e UTF-8.

Então não é uma boa idéia gravar arquivos .java, vogais com acentos e gravar em ISO-8859-1 e outro colega abrir esse arquivo em seu linux com UTF-8, uma bagunça.

Então segue um script para linux que verifica os encodings dos arquivos e outro que converte para UTF-8. Note que o script não mostra o arquivo se ele já estiver em UTF-8.

É necessário o utilitário konwert. Já usei anteriormente o recode e iconv, mas achei o konwert mais prático. E ele oferece uma opção interessante, onde ele tenta descobrir qual o encodingo do arquivo, através da opção any/pt/all-test

Script 1 - checagem do encoding

#!/bin/sh

if [ $# -lt 1 ] ; then
    echo ""
    echo " Informe um diretório para pesquisar os arquivos .java "
    exit 1
fi

find $1 -name \*.java -exec file {} \; | egrep -v 'ASCII|UTF' | while read s; do 
	ff=`echo $s | awk -F ':' '{print $1}'`;  
	file $ff; 
	echo " charset   "; konwert any/pt/all-test  $ff; 
done

Script 2 - Conversão para UTF-8

#!/bin/sh

if [ $# -lt 1 ] ; then
    echo ""
    echo " Informe um diretório para converter os arquivos .java para UTF-8"
    exit 1
fi

find . -name \*.java -exec file {} \; | grep 8859 | while read s; do 
	ff=`echo $s | awk -F ':' '{print $1}'`;   
	konwert cp1252-utf8 -O  $ff; 
done                      

No script de conversão é usado a opção -O, que faz com que o arquivo original seja trocado pelo arquivo com encoding UTF-8 

Escrito por claudio at 1:46 PM categorizado por Dicas e Scripts

Tags: linux dicas java

Domingo, 4 Novembro 2007

Quer uma chácra ?

Escrito por claudio at 5:06 PM categorizado por Fotolog

Tags: diversao fotos

 
     Navegue no histórico de mensagens: « First  « Prev   1 2 3 4 5   Next »  Last »