Índice | ||||||||
---|---|---|---|---|---|---|---|---|
|
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.
Para construir um conversor faz-se necessário possuir os seguintes conhecimentos:
O plugin de conversão é composto de duas partes:
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.
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.
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
}
} |
Deck of Cards | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||
|
Deck of Cards | ||
---|---|---|
| ||
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:
|
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.