Gustavo Pacheco - @gbpacheco


Conteúdo estratégico e técnico para LibreOffice e OpenDocument Format - ODF.

Incorporando o LibreOffice em um código VB.NET

postado em 17 de jan de 2013 08:17 por Gustavo Pacheco   [ 17 de jan de 2013 08:21 atualizado‎(s)‎ ]

Incorporar o LibreOffice em um Form é uma alternativa interessante no desenvolvimento de sistemas onde é necessário manipular documentos no padrão ODF. É possível fazer isso em várias linguagens de programação e, dependendo da complexidade do código, o resultado pode ser muito bom.

Neste tutorial, apresentarei a incorporação do LibreOffice no Visual Basic.NET utilizando o controle EmbeddedOpenOffice em Microsoft Visual Basic 2010 Express e Windows XP. O controle EmbeddedOpenOffice foi desenvolvido pela Sun pelo desenvolvedor Lars Behrmann em meados de 2005. Desde então, o projeto foi hospedado em diversos lugares (SourceForge, Google Code e ODF Toolkit). Apesar do projeto, hoje, não fazer mais parte do ODFToolkit, o controle continua funcional no .NET (fiz testes similares no Microsoft Visual C# 2010 Express com resultados corretos). Caso necessário, o código está disponível integralmente para desenvolvimento. 

Verificando a configuração do LibreOffice

O componente EmbeddedOpenOffice depende do arquivo so_activex.dll no diretório indicado em EmbeddedOpenOffice1.OpenOfficePath (normalmente, C:\Arquivos de programas\LibreOffice 3.6\program).

 (clique na figura abaixo para aumentá-la)

Esse arquivo só é instalado através da instalação personalizada do LibreOffice (recomendamos a versão 3.6.4):

Configuração do controle EmbeddedOpenOffice

O primeiro passo é obter o controle EmbeddedOpenOffice em:
http://sourceforge.net/projects/aodl/files/Embedded%20OpenOffice/Embedded%20OpenOffice%20.net%20Control%201.0.0.5/ 

Depois, descompacte o arquivo EmbeddedOpenOffice_1_0_0_5.net.zip e, em ..\EmbeddedOpenOffice_1_0_0_5.net\Control\compiled, executar register.bat para registrar o componente.

A seguir, adicione as seguintes DLLs ao ambiente (no Visual Basic 2010 Express Edition, em Project... > Add reference...) e a Toolbox (botão direito do mouse sobre a Toolbox > Choose items... > .NET Framework Componentes > Browse...).

EmbeddedOpenOfficeStartHelper.dll
EmbeddedOpenOfficenet.dll 

Por fim, o componente estará disponível na Toolbox de controles:


No seu código VB.NET, o controle é iniciado com o seguinte trecho: 

'definição do caminho padrão do LibreOffice
EmbeddedOpenOffice1.OpenOfficePath = "C:\Arquivos de programas\LibreOffice 3.6\program" 

'definição de uma pasta temporária
EmbeddedOpenOffice1.TempFolder = "c:\TEMP" 

'definição do caminho do arquivo e da abertura como somente leitura (true) ou não (false).
EmbeddedOpenOffice1.LoadDocument("C:\teste2.odt", false)

Obtendo o controle do documento via código

O controle EmbeddedOpenOffice funciona apenas como um frame de exibição de uma janela componente do LibreOffice. Ou seja, o controle não fornece métodos e propriedades para o acesso ao conteúdo do documento. É, de fato, uma lacuna no desenvolvimento do controle. 

Há no entanto, um meio poderoso para obtermos o controle do documento. Fazemos isso através da conexão VB.NET com a instância local do LibreOffice. A partir da conexão (mais especificamente a partir do objeto objDesktop), é possível descobrir o frame do documento através do seu título:

Private Sub listarFrames_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click
'************************** 
'* Procedimento para a prova de conceito de uso do controle EmpeddedOpenOffice 
'* Gustavo Buzzatti Pacheco - gbpacheco@prodesk.com.br 
'* Projeto: ODF 
'* 3 de janeiro de 2013 
'************************** 
'
Dim objServiceManager As Object 
Dim objCoreReflection As Object 
Dim objDesktop As Object 
Dim vFrames As Object 'coleção dos frames 
Dim objModel As Object 'modelo do frame 
Dim i As Integer 'índice dos frames 
Dim s As String 'string com o título e o caminho do arquivo 

'Criação da conexão com a instância local do LibreOffice
objServiceManager = CreateObject("com.sun.star.ServiceManager") 
objCoreReflection = objServiceManager.createInstance("com.sun.star.reflection.CoreReflection") 
objDesktop = objServiceManager.createInstance("com.sun.star.frame.Desktop") 

REM queryFrames(4) da interface XFrames busca todos os frames filhos do desktop

s = ""

vFrames = objDesktop.getFrames().queryFrames(4) 'com.sun.star.frame.FrameSearchFlag.CHILDREN - http://www.openoffice.org/api/docs/common/ref/com/sun/star/frame/FrameSearchFlag.html#CHILDREN

For i = LBound(vFrames) To UBound(vFrames)
      objModel = vFrames(i).getController().getModel() 
       s = s & vFrames(i).Title & " " & objModel.getURL() & " " & Chr(10) 'coloca o título e a URL na variável s 
Next (i) 

MsgBox(s, 0, "Frame Titles") ' mostra o conteúdo da variável s

End Sub

Atenção para os detalhes...

Caso o código com o componente EmbeddedOpenOffice seja executado sem que o LibreOffice tenha sido inicializado antes (via manual ou via quickstart), é possível que você obtenha o seguinte erro:


O problema é derivado de algumas alterações na definição de opções de inicialização do LibreOffice. Já foi documentado no sistema de gerenciamento de bugs do LibreOffice e já está resolvido para a versão  3.6.5.2:

https://bugs.freedesktop.org/show_bug.cgi?id=57203

Como contingência (e, também como forma de melhorar o desempenho da inicialização do LibreOffice embutido no código VB.NET), podemos executar o quickstart do LibreOffice via código antes da inicialização do controle EmbeddedOpenOffice em:

C:\Arquivos de programas\LibreOffice 3.6\program\quickstart.exe

O quickstart é um pequeno aplicativo que roda no IconTray do Windows com o objetivo de abrir rapidamente documentos no LibreOffice. Ou seja, uma pré-execução do aplicativo. 

 Executar o quickstart (mesmo que seja via código) melhorará o desempenho do seu código e evitará a mensagem de erro em versões anteriores à 3.6.5. 

Conclusão

O resultado final de um projeto de sistema que incorpore o LibreOffice pode ser algo extremamente útil se considerarmos a grande quantidade de tarefas do usuário que é baseada em documentação (mesmo que seja para algo simples como, por exemplo, a exibição de um documento somente leitura). 

Utilizando o controle Ribbon (http://officeribbon.codeplex.com/) é possível, por exemplo, criar uma barra de acesso aos recursos do aplicativo similar à do Microsoft Office 2010. O trabalho mais simples seria associar cada botão da barra ao seu respectivo comando UNO da API do LibreOffice. O trabalho mais difícil seria gerenciar o acesso aos documentos através de uma estrutura de janelas MDI. 


O exemplo fica, então, apenas como uma curiosidade. Se o objetivo é deixar o seu LibreOffice mais bonito, eu sugiro esperar um pouco mais pela versão 4.0, que permitirá a personalização da interface com o Firefox Personas. Curioso? Leia mais em: http://blog.pt-br.libreoffice.org/2013/01/11/tatuagens-e-ringtones/ .

Para comentários e sugestões, utilize twitter ou e-mail.

Verificação dos vínculos entre planilhas do Excel

postado em 19 de set de 2012 06:22 por Gustavo Pacheco   [ 17 de jan de 2013 08:21 atualizado‎(s)‎ ]

Esta é a nova versão da planilha "Código - passo 1.xlsm" do post anterior. Agora, ela permite a identificação de vínculos não encontrados na rede. Os caminhos para os arquivos não encontrados são colocados na planilha "Vínculos não encontrados".
 
Para utilizá-la, habilite as macros e clique no botão "Iniciar processamento". Você deverá responder se deseja cria os arquivos ODS correspondentes ou não (caso essa seja a sua primeira utilização da planilha, clique em "Não"). O próximo passo é escolher o arquivo do topo da árvore de arquivos vinculados, ou seja, o seu arquivo principal (aquele que reúne os vínculos dos arquivos secundários). Ao escolher o arquivo e clicar em "Abrir", a macro abrirá cada arquivo da árvore encontrado, e listará os vínculos de forma recursiva.
 
Testes foram realizados com sucesso sobre árvores de vínculos complexas com mais de 1000 vínculos. Vale ressaltar no entanto, que o código de macro no arquivo "Código de verificação de vínculos.xlsm" ainda é experimental. Não há garantia sobre os resultados da sua utilização. 
Para comentários e sugestões, utilize twitter ou e-mail.

Planilhas com vínculos do Microsoft Excel para o LibreOffice Calc

postado em 11 de set de 2012 05:19 por Gustavo Pacheco   [ 17 de jan de 2013 08:22 atualizado‎(s)‎ ]

Um dos pontos mais críticos da implantação do LibreOffice é o tratamento de arquivos legados nos formatos XLSX ou XLS com vínculos entre si. Em geral, não apenas pela dificuldade técnica de convertê-los sem problemas mas, também, devido ao fato de que, muitas vezes, os vínculos estão disseminados por um conjunto de planilhas que até mesmo os usuários mais experientes desconhecem.  

Nas últimas semanas, tenho trabalhado no desenvolvimento de um código para conversão de arquivos do Excel com vínculos. Os testes que fiz no meu computador com exemplos de complexidade média funcionaram perfeitamente. Nos próximos dias pretendo aplicar essa técnica em arquivos mais robustos, tanto com vínculos locais quanto vínculos em rede. 

 O procedimento é realizado em duas etapas, descritas abaixo:

 Etapa 1 - criação dos arquivos ODS no Excel 2010
 - abrir o arquivo "Código - passo 1.xlsm";
 - clicar no botão "Iniciar processamento";
 - selecionar o último arquivo da árvore de vínculos (em geral, o arquivo mais importante - aquele que contém os resultados finais);
 - o código de macro iniciará, imediatamente, o procedimento de identificação dos vínculos. Cada arquivo vinculado é identificado e aberto para a verificação de novos vínculos; 
 - todos os arquivos vinculados são abertos salvos no formato ODS;
 - consequentemente, o Excel atualiza os vínculos de arquivos XLSX ou XLS para ODS;
 - os novos arquivos ODS são salvos.

 Importante: os arquivos XLSX/XLS não são alterados nesse procedimento! 

 Com a etapa 1 finalizada, todos os arquivos foram convertidos para o formato ODS pelo Excel. No entanto, como há um problema de compatibilidade na formação do vínculo entre arquivos ODS pelo Excel, esses vínculos não serão reconhecidos quando esses arquivos forem abertos no Calc.

 Etapa 2  - correção dos vínculos nos arquivos ODS
 - abrir o arquivo "Código - passo 2.ods";
 - copiar a lista de arquivos gerada pelo arquivo "Código - passo 1.xlsm" e colá-la a partir da célula A1;
 - clicar no botão "Processar arquivos";
 - será feita a abertura de cada um dos arquivos da lista e a correção do link;
 - logo após a finalização do procedimento, os vínculos estarão corrigidos e funcionais, através do menu Editar > Vínculos.

O código nos arquivos "Código - passo 1.xlsm" e "Código - passo 2.ods" ainda é experimental. Não há garantia sobre os resultados da sua utilização. 

Para comentários e sugestões, utilize twitter ou e-mail.

Revista Espírito Livre - Olhos para o futuro: a TDF e o LibreOffice Online

postado em 30 de mar de 2012 09:21 por Gustavo Pacheco

Esse é o início do artigo que escrevi para a Revista Espírito Livre logo após a primeira edição do Fórum Espirito Livre, realizado em Vitória/ES no final do ano passado. Para a leitura completa, não deixe de baixar a revista!

Boa leitura!

Após pouco mais de um ano de atividades da The Document Foundation (TDF), já é possível mensurar os avanços estratégicos e técnicos que foram desenvolvidos sobre o LibreOffice. A maior parte desse avanço diz respeito à incorporação de novos recursos ao pacote de aplicativos. Nesse período, o LibreOffice evoluiu para uma aplicação mais
rápida e funcional, resultado, principalmente, das mudanças na estrutura de desenvolvimento do projeto, através da aceleração das contribuições e da expansão da base de desenvolvedores.

Hoje, o LibreOffice constitui-se como a principal solução de edição de documentos no formato OpenDocument. Não apenas se consideramos o uso tradicional da aplicação, instalada sobre um sistema operacional local mas, também, se avaliarmos o enorme potencial da API do LibreOffice. Essa API permi te adicionar, a qualquer desenvolvimento, o poder das funções das aplicações e a flexibilidade de um padrão aberto de armazenamento de dados...

Para ler o artigo completo, baixe a Revista Espírito Livre em:

http://revista.espiritolivre.org/pdf/Revista_EspiritoLivre_035_Fevereiro2012.pdf

Normas e extensões do LibreOffice na #cpbr5

postado em 6 de mar de 2012 11:57 por Gustavo Pacheco   [ 6 de mar de 2012 12:26 atualizado‎(s)‎ ]

Oficina de normatização

Este ano estive pela primeira vez na Campus Party. Como adiantei aqui no blog, a oficina que ministrei foi sobre normatização de documentos no LibreOffice Writer. Esse foi o tema escolhido por mim e pela coordenação da área de Software Livre da #cpbr5 como o mais aderente ao interesse dos campuseiros. Foi um ótimo palpite. Durante mais de duas horas de oficina contei com um público interessado em resolver seus problemas de normatização. 

O formato da oficina foi totalmente prático. Fiz uma introdução básica sobre normatização, com exemplos variados de normas utilizadas em algumas universidades brasileiras. Depois, a partir de uma página em branco do Writer, iniciei todas as etapas de normatização de um documento. 

Ao chegarmos ao final da oficina, tínhamos um documento compatível com as normas mais exigentes do meio acadêmico. Fico satisfeito em dizer que os participantes contribuíram muito para esse resultado. A partir das perguntas deles, fui positivamente desafiado a implementar as necessidades de documentação exigidas para os seus trabalhos de conclusão de curso. Para minha tranquilidade e para satisfação dos oficineiros, o LibreOffice Writer é uma ferramenta fantástica para qualquer necessidade.

Em breve pretendo desenvolver alguma documentação sobre o assunto. Para quem estiver interessado em conhecer mais sobre o LibreOffice Writer e as demais aplicações do pacote, sugiro um link introdutório muito útil no qual trabalhei durante algum tempo: a página de perguntas mais frequentes do wiki da TDF.

Novas versões das extensões AddPics e Valor por extenso

Além da oficina, procurei deixar um registro adicional para o evento: durante a Campus Party fiz o lançamento de duas novas versões das extensões AddPics e Valor por extenso. A primeira, permite criar um documento de texto a partir da inserção de imagens em uma pasta do computador. Já a segunda, é uma das extensões mais utilizadas pelos usuários brasileiros e implementa o valor por extenso de um determinado número. 

A extensão AddPics agora apresenta a opção de definição da âncora da imagem. Essa opção permite ao usuário definir se as imagens serão incluídas dentro ou fora da área das margens de página do novo documento. Na nova interface, tanto a âncora quanto o critério de classificação passaram a ser definidos através de campos de listagem. Por fim, a extensão ganhou a sua quarta tradução. Agora, além do inglês, do alemão e do português, a extensão está disponível em francês, gentileza de Sophie Gautier. Você poderá baixá-la a partir do endereço:


Já a extensão Valor por extenso, por sua vez, deu seu primeiro passo rumo à internacionalização. Agora, a extensão funciona também para o português de Portugal. Embora à primeira vista isso pareça trivial, não é. O primeiro passo é simples: se o idioma da interface for o português do Brasil, o código utiliza o real como moeda, se for o português de Portugal, o código utiliza o euro. No entanto, ao iniciar o desenvolvimento, me deparei com uma surpresa. Portugal utiliza a escala longa na nomenclatura de nomes de números, enquanto que, no Brasil, utilizamos a escala curta.

Ou seja, enquanto nós contamos o bilhão sucedendo o milhão, os portugueses contam mil milhões sucedendo o milhão. A diferença fica clara na tabela abaixo:

Número

Escala curta

Escala longa

100 = 1

um

um

10¹ = 10

dez

dez

10² = 100

cem

cem

103 = 1 000

mil

mil

106 = 1 000 000

milhão

milhão

109 = 1 000 000 000

bilhão

mil milhões

1012 = 1 000 000 000 000

trilhão

bilhão

1015 = 1 000 000 000 000 000

quatrilhão

mil biliões

1018 = 1 000 000 000 000 000 000

quintilhão

trilhão

1021 = 1 000 000 000 000 000 000 000

sextilhão

mil triliões

1024 = 1 000 000 000 000 000 000 000 000

septilhão

quatrilhão

1027 = 1 000 000 000 000 000 000 000 000 000

octilhão

mil quatriliões

1030 = 1 000 000 000 000 000 000 000 000 000 000

nonilhão

quintilhão

1033 = 1 000 000 000 000 000 000 000 000 000 000 000

decilhão

mil quintiliões

1036 = 1 000 000 000 000 000 000 000 000 000 000 000 000

undecilhão

sextilhão

1039 = 1 000 000 000 000 000 000 000 000 000 000 000 000 000

duodecilhão

mil sextiliões

1042 = 1 000 000 000 000 000 000 000 000 000 000 000 000 000 000

tredecilhão

septilhão

10100 (googol) = 10 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000

dez duotrigintiliões

dez mil sexdeciliões

10googol (Googolplex)

-

-

10googolplex (Googolplexian)

-

-


Em resumo, o que um português entende como 1 bilhão de euros é diferente do que um brasileiro entende por 1 bilhão de euros. Apesar da surpresa, não foi difícil resolver o problema. A solução foi, novamente, avaliar qual o idioma da interface do usuário e definir de forma diferente os vetores de nomes de número.

Por último, uma peculiaridade sintática: o símbolo do euro (€) é colocado depois do valor da moeda. Por exemplo:

1.2345,67 €

enquanto que, no Brasil, usamos o R$ antes do valor:

R$ 1.2345,67

Essa, por fim, foi a modificação mais complexa pois tive que alterar algumas estruturas na parte de código desenvolvida originalmente pelo Noelson Duarte. Diga-se de passagem, Noelson fez um trabalho excelente de prevenção de erros. Por isso, todos os pequenos bugs existentes no código são conhecidos. Não há surpresas e está na nossa pauta resolvê-los. 

Vale destacar que Carlos Moreira e Sérgio Marques, do projeto LibreOffice português, estão testando exaustivamente cada versão e reportado sugestões valiosas para a evolução da extensão. O local de download da extensão é:


Notas adicionais

Passei algumas horas na companhia do Bruno Souza, que está a frente do Instituto Campus Party, responsável pelas atividades de inclusão digital na #cpbr5, cuja meta foi a de incluir mais de 5.000 pessoas durante os dias do evento.

Valéssio Britto me apresentou a extensão Sozi do Inkscape. Clique no link e veja o que ela faz com arquivos SVG. Gostaria muito que alguns efeitos como o dessa extensão estivessem presentes no Impress.

É sempre bom encontrar Eliane Domingos. Ela também esteve na #cpbr5 com sua incansável criatividade. Neste link, a foto do concurso criado pela Eliane para premiar o campuseiro que soubesse o nome do 'Bug Hunting Hero' com uma camiseta do LibreOffice.

A apresentação de Porto Alegre recuperou mais de 20 anos da história de inovação da cidade. Em pouco mais de 40 minutos, Daniel Bittencourt, Cézar Busatto e Luís Cunha empilharam exemplos de como a cidadania pode ser plenamente exercida em bases digitais.


Até a #cpbr6!

Enfim, a minha primeira Campus Party foi ótima e acho que valeu a pena fazer um pouco mais do que apenas a oficina. Tenho feito isso desde o fisl12, quando publiquei a nova versão da extensão Copy only visible cells. Na Latinoware 2011, logo depois, fiz a publicação da extensão de validação do CNPJ e do CPF. Desenvolver código simples e útil como os códigos dessas extensões foi a melhor forma de agradecer às pessoas que investiram na minha participação nesses eventos. Particularmente em relação a Campus Party, agradeço ao Cristiano, ao Pablo, ao Paulo e ao Mário. Nos veremos na #cpbr6!


André Noel, Rafael Gomes, Jansen Sena e Gustavo Pacheco.


Panorama geral da Arena #cpbr5.

Are you the next Bug Hunting Hero?

postado em 21 de fev de 2012 11:26 por Gustavo Pacheco   [ 17 de jan de 2013 08:24 atualizado‎(s)‎ ]

Last week, after the announcement of LibreOffice 3.5, Italo Vinholi sent me a kind email with the 'Bug Hunting Hero Award', on behalf of the TDF Board of Directors and the Membership Committee. I recieved it because I submitted the highest number of bugs in the Bug Hunting Session of LibreOffice 3.5. So I would like to share it with three guys of the QA team, who worked untiringly: Cor Nouws, Rainer Bielefeld and Christian Lohmaier. They worked a lot in Bug Hunting days, helping people on IRC, checking the filled bugs and, finally, doing the statistics review. They, and all of 150 volunteer bug hunters, did the best!

I think the 'Bug Hunting Session' was a good way to encourage people to join us. It's an excellent example of the The Document Foundation work. We are the former OpenOffice.org community but, now, in a new and exciting ways to collaborate. From Marketing to Easy Hacks, everyone can find the better place to start. I have found many places and I'm very happy.  Not only because the award. In fact, the 'Bug Hunting Hero Award' was a great honor but I have other reasons to celebrate. At the end of 2011, I did my first commit of code and I published my 8th project at Extensions Repository. After this hot summer in Brazil, I intend to restart my code study and my contributions.

LibreOffice is the result of an effort of many heros around the world. This is the most important. I'm sure that LibreOffice 3.5 is really the best free office suite ever. Yesterday, we had another great news: our foundation has been officially incorporated in Berlin. I'm sure that we are building one of the best community model too. 

I'm proud to be part of LibreOffice, it's a fantastic experience! Come and join us at http://www.libreoffice.org! Maybe you can be the next Bug Hunting Hero! :)


LibreOffice 3.5.0 terá numeração de linhas no Editor Basic

postado em 25 de jan de 2012 12:24 por Gustavo Pacheco   [ 25 de jan de 2012 12:36 atualizado‎(s)‎ ]

A melhoria da IDE do editor BASIC é um desejo antigo dos usuários que desenvolvem macros no LibreOffice. Desde a versão 2.0 do OpenOffice.org, com a inclusão da internacionalização de diálogos, não havia uma mudança significativa. 

Apesar de relativamente simples, essa melhoria traz uma constatação clara de que a inclusão de funcionalidades de baixa complexidade pode melhorar muito o trabalho do usuário final. A numeração das linhas facilita a organização do desenvolvedor de macros, especialmente porque não é feita nenhuma distinção visual do início e fim das Subs e Functions. Para acioná-la, basta ir até o menu Exibir > Numeração de linhas.


Tu, usuário de qualquer uma das aplicações, vais notar que mudanças como essa estarão presentes em toda a versão 3.5.0. Há exemplos interessantes como a inclusão do botão de troca de telas no Impress (para quem usa a extensão Presenter Console) e a inclusão do item 'Proteger planilha...' no menu de contexto das guias de planilha. Destaco, ainda, que este último recurso foi incorporado ao Calc pelo brasileiro Olivier Hallot, que, nos últimos meses, dedicou-se a esse e outros bons desenvolvimentos no código-fonte do LibreOffice. 


Um estudo de caso sobre o uso do OpenDocument Format no TJ/RS

postado em 17 de jan de 2012 07:54 por Gustavo Pacheco   [ 17 de jan de 2012 07:56 atualizado‎(s)‎ ]

Há algumas semanas, recebi um artigo interessante sobre o uso do padrão OpenDocument no Tribunal de Justiça do Estado do Rio Grande do Sul. O artigo chamou a minha atenção não apenas por ser no meu estado, mas por ser um estudo direcionado para aspectos não técnicos da utilização de padrões abertos e softwares livres. 

Faz tempo que o Tribunal de Justiça/RS utiliza o padrão OpenDocument. Aliás, cabe ressaltar que o Tribunal Regional Eleitoral, o Tribunal de Justiça Militar e o Tribunal Regional do Trabalho da 4.ª Região também são usuários extensivos do ODF. Essa movimentação em direção ao software livre e aos padrões abertos refletiu-se em todo o ecossistema jurídico gaúcho. Em qualquer escritório de advocacia que dependa das sentenças disponibilizadas na web pelos tribunais há um aplicativo capaz de abrir o formato OpenDocument. 

O artigo chama-se "O uso de softwares livres como política pública e as implicações na formação de uma cidadania digital", foi escrito por Marcello Malgarin Filho e Débora Krischke Leitão e publicado no Cadernos da Escola de Direito e Relações Internacionais de Curitiba (ed.15: 75-86 ISSN 1678-2933). Abaixo, destaco o trecho mais significativo do artigo.

Os órgãos judiciários, assim como outros vários organismos estatais em diversas áreas, já disponibilizavam a quase meia década arquivos em formato digital. Documentos que, anteriormente, apresentavam-se apenas em via impressa, hoje  são disponibilizados de forma digitalizada em vários âmbitos. Vemos uma facilidade ao acesso à informação e um rompimento com os limites espaço-temporais para acessá-la. O TJRS já disponibiliza arquivos em formato digital há um bom tempo, entretanto a novidade é a extensão que as sentenças são divulgadas, atualmente, on-line, em .odt, diferentemente dos primeiros arquivos de texto que eram disponibilizados no site do TJRS, que eram em .doc (extensão de arquivo do Microsoft Word).

Há aproximadamente dois anos, o governo federal adotou uma postura de priorizar o uso  da suíte aplicativos  OpenOffice.org (na qual é incluído o Writer, programa que usa a extensão .odt) e de outros softwares abertos em vvários departamentos e instituições públicas. O TJRS foi um deles. Todos os computadores do tribunal passaram a editar textos, planilhas,  slides em softwares abertos e não mais nos aplicativos do Microsoft Office apenas.

Primeiramente o  Word não possuía a possibilidade de execução de arquivos em formato  .odt. Por se tratar de um software fechado, somente quando fosse lançada a nova atualização o programa poderia rodar os textos do aplicativo do  OpenOffice.org. Este, por ser gratuito e de código aberto, é disponibilizado na página eletrônica do tribunal para  download.

Gerando arquivos OpenDocument através do Org-mode no GNU Emacs

postado em 12 de jan de 2012 03:58 por Gustavo Pacheco   [ 12 de jan de 2012 03:59 atualizado‎(s)‎ ]

Vários amigos do mundo do software livre tem especial afeição pelo editor GNU Emacs. Não apenas pelo seu poder de edição de documentos mas, também, pelo apreço ter sido um dos primeiros softwares sob a licença GNU GPL. 

Uma das peculiaridades do GNU Emacs é sua enorme possibilidade de customização. Entre diversos componentes que podem ser adicionados a ele, o Org-mode é um dos mais populares. Com recursos avançados que permitem a criação de listas de tarefas, projetos e agenda, o Org-mode agora permite a exportação dos documentos para o padrão OpenDocument. Essa foi uma das boas novidades da versão 7.8.

David O'Toole escreveu um ótimo tutorial sobre o uso do Org-mode. Neste artigo, você encontrará boa parte do trabalho de O'Toole traduzida e reorganizada para que, ao final, tenhamos um exemplo razoável para a geração de um arquivo OpenDocument através do GNU Emacs com o Org-mode. Tenho certeza que o resultado final impressionará muita gente!

O primeiro passo é obter o Org-mode. Isso pode ser feito através do website do projeto (http://www.org-mode.org). Caso você opte pelo download do repositório git, use:

$ mkdir git 
$ cd git 
$ mkdir org-mode 
$ git clone git://orgmode.org/org-mode.git org-mode 

Ou, ainda, você pode preferir fazer o download atráves do pacote compactado , disponível em

Depois de ter feito o download do arquivo, crie uma pasta de trabalho e descompacte-o nela. Caso você tenha feito o download pelo git, entre na pasta de trabalho onde estão os arquivos que foram baixados: 

$ cd org-mode 

Localize, agora, o arquivo Makefile e certifique-se que o nome do arquivo binário do GNU Emacs está correto (algo como emacs ou xemacs). Verifique também o local para o diretório de arquivos Lisp (/usr/local/share/emacs/site-lisp). 

Depois, volte ao prompt e compile: 

$ make 
$ make install 

Agora, no arquivo .emacs do seu perfil, adicione o seguinte conteúdo: 

(add-to-list 'load-path "/home/gbpacheco/git/org-mode") 
(require 'org-install) 
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode)) 
(define-key global-map "\C-cl" 'org-store-link) 
(define-key global-map "\C-ca" 'org-agenda) 
(setq org-log-done t) 

Na primeira linha do trecho acima, você terá que, obviamente, apontar para o caminho da sua pasta de arquivos org-mode. Ou seja, a pasta para a qual você baixou seus arquivos via git ou na qual o arquivo tar.gz foi descompactado. 

 
Após editar, salve o arquivo .emacs e inicie o GNU Emacs. 



Vá até o menu File > Visit new file... para criar um novo documento. O nosso arquivo de exemplo terá a extensão .org, que automaticamente configura o GNU Emacs com o org-mode. Digitaremos, agora, uma lista de tarefas usando o asterisco como marcador da lista hierárquica: 

* Tarefas 
** TODO Finalizar o tutorial de exportação de arquivos ODF no Emacs 

O resultado até o momento, é representado na figura abaixo: 



Caso você queira utilizar as funções de lista de tarefas do Org-mode na prática, experimente posicionar o cursor sobre a segunda linha e clicar em Ctrl+C e, em seguinda, Ctrl+T. A tarefa será considerada como executada!



 Uma lista detalhada dos comandos do Org-mode no menu Org do GNU Emacs. 

As listas hierárquicas também podem ser úteis para a marcação das divisões lógicas de um documento (capítulos, seções, subseções, etc.) como no exemplo da figura abaixo. A identificação de títulos de capítulos é feita pelo uso de apenas um asterisco. Dois asteriscos representam títulos de seções de capítulos e assim sucessivamente para cada nível. 

 
Dentro de cada nível de título, você pode inserir texto. Links são permitidos através do formato [[link][descrição]]. 


Ao digitar o último colchete, o Org-mode identificará automaticamente a existência do link. 


Uma visão geral da edição do documento deverá ser semelhante à apresentada na figura abaixo:


Para uma ideia geral da estrutura do documento, como se visualizássemos um índice, clique em Shift+TAB

 
Ao final do seu trabalho, simplesmente clique em Ctrl+c+e+o para gerar o arquivo ODT. 


O arquivo será gerado na mesma pasta em que se encontra o arquivo Teste.org original. Localize essa pasta no seu computador e abra, no LibreOffice, o arquivo Teste.odt gerado.


O resultado é o apresentado acima! Os tópicos identificados pelos asteriscos no GNU Emacs foram transformados, conforme o seu respectivo nível, em estilos de Título. A partir dos títulos, o índice do documento também foi criado! 

Embora eu não tenha utilizado a numeração de página, o exemplo já serve para demonstrar o poder da geração ODF do Org-mode. Por isso, acredito que a nova versão 7.8, a primeira que incorpora essa funcionalidade, vá tornar o Org-mode ainda mais popular. Os aficcionados pelo GNU Emacs certamente irão gostar.

Para mais informações, visite http://orgmode.org.


1-10 of 24