Índice

 

Visualização de Documentos

 

Os documentos devem possuir uma cópia no formato PDF 1.4 para serem visualizados internamente no TOTVS | ECM, cuja especificação está em http://www.adobe.com/devnet/pdf/pdfs/PDFReference.pdf

O ECM 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:

 

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 TOTVS | ECM.

 

Parte 1: Construindo o EJB Message-Driven

 

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

package testeconv;
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” é onde os eventos de publicação 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 ECM está indicando que é o momento da conversão customizada ser executada.

Para pegar 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 http://www.verypdf.com/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 ECM 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 especificados do Java™ EE.

 

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

 

Pode ser utilizado o message-driven explicado no item anterior na criação de documentos de longo prazo, basta 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, se essa String for igual a “true” é por que o documento que se quer gerar é um PDF/A, considerado arquivo de longo prazo.

O ECM considera apenas o PDF/A como formato possível de gerar documentos de longo prazo via message-driven.

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. 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.

Na primeira linha estamos recuperando o valor do parâmetro “isLongTerm” para saber se esta sendo requerida a criação de um arquivo de longo prazo. Após feita a verificação da extensão do documento, verificamos 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” fazendo doc + “PDFA.pdf”. Segue fonte exemplo:

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
}
}

 

Parte 3: Registrando o conversos no ECM

 

Na tela GED ou Painel de controle, selecione a tela Eventos:

 

 

Após selecionar esta opção, irá abrir uma tela de edição JavaScript, selecione a opção adicionar e escolha o evento addDocumentConvertionExt.

 

 

O editor irá apresentar a função addDocumentConvertionExt para ser editada. O objetivo dessa função é adicionar as extensões que possuem um conversor customizado, neste caso:

 

Para impressão de documentos publicados com a opção "Atualiza Propriedades 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).

 

Parte 4: Indicar que o documento utiliza o visualizador interno

 

Agora que a extensão .txt foi registrada como possuindo um conversor customizado, basta selecionar a opção utiliza visualizador interno na publicação do documento: