Home

TOTVS | Plataformas e tecnologias

Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Índice

Índice
maxLevel4
outlinetrue
exclude.*ndice
stylenone

 

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:

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

 

Parte 1: Construindo o EJB Message-Driven

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

Bloco de código
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:

Bloco de código
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

Deck of Cards
id1
Card
id1
labelPasso 1

 

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

 

Image Added

Card
id1
labelPasso 2

 

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

 

Image Added

Card
id1
labelPasso 3

 

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:

 

Image Added

Aviso
titleAtenção:

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

Deck of Cards
id2

 

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:

 

Image Added

 

Third Party Trademarks

Adobe, Flash, Flex, Flex Builder, PostScript and Reader are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and/or other countries.

Apache is a trademark of The Apache Software Foundation.

Apple is a trademark of Apple Inc., registered in the U.S. and other countries

Firefox and Mozilla are registered trademarks of the Mozilla Foundation.

Google, Android and Google Chrome are trademarks of the Google Inc.

IOS is a trademark or registered trademark of Cisco in the U.S. and other countries and is used under license

JavaScript is a trademark of Oracle Corporation.

Liferay, Liferay Portal, and the Liferay logo are trademarks or registered trademarks of Liferay, Inc., in the United States and other countries.

Linux® is the registered trademark of Linus Torvalds in the U.S. and other countries.

Microsoft, Active Directory, Excel, Internet Explorer, Outlook, PowerPoint, SQL Server, Windows and Windows Vista are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.

MySQL is a trademark of Oracle Corporation and/or its affiliates.

openDBcopy is an open-source project by Anthony Smith, published under the terms of the GNU General Public License

OpenLDAP is a registered trademark of the OpenLDAP Foundation

Oracle, Java and OpenOffice.org are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Progress and OpenEdge are trademarks or registered trademarks of Progress Software Corporation or one of its subsidiaries or affiliates in the U.S. and other countries.

Red Hat and JBoss are registered trademarks of Red Hat, Inc. in the United States and other countries.

This product includes software developed by the Visigoth Software Society (http://www.visigoths.org/).

Any other third party trademarks are the property of their respective owners.