Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

Versão 1 Próxima »

Índice

 

Visualização de Documentos

Por padrão, o visualizador interno do Fluig suporta os formatos de documentos imagens, textos e de extensão de PDF. Porém existem casos que é necessário que o visualizador seja suportado para outros formatos de documento como planilhas, arquivos DWG, etc.

Com intuito de facilitar a integração com diferentes formatos, o Fluig possui pontos de customização que permite qualquer formato de arquivo ser suportado no visualizador interno desde que exista alguma ferramenta que realize a conversão do formato desejado para o formato PDF.

Os documentos devem possuir uma cópia no formato PDF 1.4 para serem visualizados internamente no Fluig, cuja especificação está disponível aqui.

O Fluig faz a conversão automática para PDF com os documentos de texto suportados pelo Microsoft® Word ou OpenOffice.org™, para estes documentos faça o download da biblioteca aqui.

Para os demais tipos, caso seja desejado utilizar o visualizador interno, deve ser construído um plugin de conversão para PDF.

 

Conhecimentos Necessários

Para construir um conversor faz-se necessário possuir os seguintes conhecimentos:

  • Tecnologia Java™ EE
  • Linguagem JavaScript

 

Construção de um Conversor

O plugin de conversão é composto de duas partes:

  1. Um componente EJB Message-Driven, para receber a solicitação de conversão;
  2. Aplicativo/programa que irá fazer a conversão;
  3. Indicar que o documento utiliza o visualizador interno.

 

Este capítulo irá apresentar um exemplo de conversor para arquivos texto (txt) em PDF, assim será possível utilizá-lo no visualizador interno do Fluig.

 

Importante

Para auxiliar faça o download dos códigos a seguir:

ECMExternalConvertion-project.zip

 

 

 

     

    Passo 1: Contruindo o EJB Message-Driven

    Criar um Message-Driven que escute o tópico topic/wdkDocument: Segue fonte exemplo:

     

    TxtMessageBean.java
    package com.fluig.conv;
    
    import javax.ejb.ActivationConfigProperty;
    import javax.ejb.MessageDriven;
    import javax.jms.Message;
    import javax.jms.MessageListener;
    
    @MessageDriven(name = "test/TxtConverter", activationConfig = {
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "topic/wdkDocument")
    })
    public class TxtMessageBean implements MessageListener {
    
        @Override
        public void onMessage(Message message) {
            try {
                String event = message.getStringProperty("event");
                if (event != null && event.equals("EXTERNALCONVERTION")) {
                    String doc = message.getStringProperty("documentpath");
                    if (doc != null && doc.endsWith(".txt")) {
                        ProcessBuilder pb = new ProcessBuilder("txt2pdf.exe", doc, doc + ".pdf", "-lpp40");
                        pb.start();
                    }
                }
                
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
    }

     

    O Message-Driven acima configura a propriedade destinationType para "javax.jms.Topic" para indicar que irá escutar um tópico JMS, e a propriedade destination para "topic/wdkDocument" para indicar qual tópico será ouvido. O tópico "topic/wdkDocument" se refere à onde os eventos de publicação de documentos são enviados.

    Ao receber uma mensagem, deverá verificar o tipo de evento publicado através da StringProperty "event", se o valor dessa propriedade for "EXTERNALCONVERTION", significa que o Fluig está indicando que é o momento da conversão customizada ser executada.

    Para conhecer o caminho do documento, verifique a StringProperty "documentpath".

    Após isto, verifica-se a extensão do arquivo para validar se este é o conversor correto, pois pode haver mais de um para extensões diferentes.

    Validado os parâmetros, pode-se então chamar o programa conversor, que no caso do exemplo, foi usado o freeware txt2pdf .

    O documento destino deverá possuir o mesmo nome acrescido da extensão .pdf e este deverá ficar no mesmo diretório. Ex: doc.txt convertido: doc.txt.pdf

    Lembramos que o documento origem não poderá ser modificado, com a penalidade de o Fluig indicar que ele foi alterado externamente (validação de CRC).

    Este Message-Driven deverá ser empacotado e implantado no servidor de aplicações conforme as especificações do Java™ EE.

     

     

    Passo 2: Message-Driven para criação de documentos de longo prazo

    Pode ser utilizado o Message-Driven apresentado no item anterior na criação de documentos de longo prazo, sendo necessário fazer algumas alterações. Para saber se o Message-Driven esta sendo utilizado para criação do arquivo de longo prazo, existe um novo parâmetro chamado "isLongTerm", esse parâmetro é uma String, e se ela for igual a "true" é por que o documento que se quer gerar é um PDF/A, considerado arquivo de longo prazo. O Fluig considera apenas o PDF/A como formato apto a gerar documentos de longo prazo via Message-Drive.

    Para identificar a criação de um arquivo de longo prazo, o nome físico do documento deve ser alterado, incluindo a string "PDFA" no final do nome do arquivo. Por exemplo, se o nome do arquivo for manual.txt, o nome desse arquivo após a conversão será manual.txtPDFA.pdf. Veja o exemplo abaixo ilustrando as alterações necessárias no Message-Driven para criar o documento de longo prazo:

     

    String longTerm = message.getStringProperty("isLongTerm");
    
    if (doc != null && doc.endsWith(".txt")) {
    	if (longTerm != null && longTerm.equals("true")) {
    		String documentName = doc + "PDFA.pdf";
    		//Chamar o método de conversão para PDF/A
    	}
    }

    Na primeira linha recupera-se o valor do parâmetro "isLongTerm" para identificar se esta sendo requerida a criação de um arquivo de longo prazo. Após feita a verificação da extensão do documento, é verificado o valor da variável longTerm, se ela não for nula e for igual a "true", então realizamos a criação chamando o método de conversão de documentos utilizando para isso o nome do arquivo com a string "PDFA.pdf".

     

    Passo 3: Registrando o conversor no Fluig

    No Fluig Studio, clicar com o botão direito do mouse na pasta events, selecionar a opção New e em seguida a opção Evento Global Fluig:

     

     

    O assistente Novo Evento é aberto. Selecione o evento addDocumentConvertionExt e em seguida clique no botão Finish.

    O evento é adicionado ao projeto na pasta events e aberto para edição. O objetivo desse evento global é adicionar as extensões que possuem um conversor customizado. Neste exemplo é necessário adicionar a extensão txt, conforme fonte abaixo:

    addDocumentConvertionExt.js
    function addDocumentConvertionExt(ext) {
    	ext.add("txt");
    }

    Atenção: Para impressão de documentos publicados com a opção "Atualiza Propriedades da Cópia Controlada?" NÃO será utilizado o conversor externo. Como é necessário aplicar as propriedades da cópia controlada no documento original e efetuar uma nova conversão, este processo só pode ser realizado em tempo de execução com o conversor padrão do produto. Portanto, na impressão do documento, pode ocorrer a perda de formatação dependendo dos recursos visuais aplicados em seu conteúdo (bordas, cores, imagens, etc).



     

    Passo 4: Adicionar o listener ao servidor Fluig

    Empacote o listener JMS e o adicione em <SERVER FLUIG>/jboss/apps/.

     

     

     

     

     

     

    Passo 5: Indicar que o documento utiliza o visualizador interno

    Agora que a extensão .txt foi registrada como possuindo um conversor customizado, basta assinalar a opção "Utiliza Visualizador Interno?" na publicação do documento:

     

     

     

    Observações:

    • No exemplo disponibilizado, são apresentados exemplos de integrações com os produtos Office (Word, Excel e PowerPoint) previamente criados.
    • No exemplo disponibilizado, é apresentado um exemplo de integração de conversão de formatos DWG utilizando a ferramenta dwg2pdf da empresa AutoDWG.
    • Os códigos de conversão são apenas exemplos, seu desenvolvimento e configuração é de responsabilidade do desenvolvedor.
    • Pode ser utilizado o plugin empacotado disponível em anexo. Sendo necessário para integração com os produtos Microsoft as configurações detalhas no guia Ambiente de execução do Java®, permitindo a comunicação entre o servidor Fluig e os componentes do Office.

     

     

     

    • Sem rótulos