Atenção
Esta página é destinada para atualizações 1.6 e superiores do TOTVS Fluig Plataforma.
Índice
Visualização de Documentos
Por padrão, o visualizador interno da plataforma TOTVS 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, a plataforma 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 na plataforma, cuja especificação está disponível aqui.
A plataforma faz a conversão automática para PDF com os documentos de texto suportados pelo Microsoft® Word ou OpenOffice.org™. 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:
- Um componente EJB Message-Driven, para receber a solicitação de conversão;
- Aplicativo/programa que irá fazer a conversão;
- 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 da plataforma.
Importante
Para auxiliar, faça o download do conversor external-document-conversion.jar
Caso já tenha utilizado outro conversor externo, é necessário removê-lo da pasta [diretório_instalação]/appserver/apps antes de incluir este novo JAR.
Também não é mais necessária a inclusão de DLL na pasta bin do App Server Wildfly como era anteriormente. Logo, caso tenha adicionado o arquivo jacob-1.18-M2-x64.dll em [diretório_instalação]\appserver\bin, o mesmo pode ser removido.
Passo 1: Contruindo o EJB Message-Driven
Criar um Message-Driven que escute o tópico topic/wdkDocument: Segue fonte exemplo:
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 a plataforma 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 a plataforma 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.