Histórico da Página
HTML |
---|
<div id="main-content" class="wiki-content group">
<h1 id="ConversoresdeDocumentos-Índice">Índice</h1>
<p> </p>
<p>
<style type='text/css'>/*<![CDATA[*/
div.rbtoc1412695505262 {
padding: 0px;
}
div.rbtoc1412695505262 ul {
list-style: none;
margin-left: 0px;
}
div.rbtoc1412695505262 li {
margin-left: 0px;
padding-left: 0px;
}
/*]]>*/
</style>
<div class='toc-macro rbtoc1412695505262'>
<ul class='toc-indentation'>
<li><span class='TOCOutline'>1</span> <a
href='#ConversoresdeDocumentos-VisualizaçãodeDocumentos'>Visualización
de documentos.</a></li>
<li><span class='TOCOutline'>2</span> <a
href='#ConversoresdeDocumentos-ConhecimentosNecessários'>Conocimientos
necesarios</a></li>
<li><span class='TOCOutline'>3</span> <a
href='#ConversoresdeDocumentos-ConstruçãodeumConversor'>Construcción
de un convertidor </a>
<ul class='toc-indentation'>
<li><span class='TOCOutline'>3.1</span> <a
href='#ConversoresdeDocumentos-Parte1:ConstruindooEJBMessage-Driven'>Parte
1: Construyendo el EJB Message-Driven</a></li>
<li><span class='TOCOutline'>3.2</span> <a
href='#ConversoresdeDocumentos-Parte2:Message-Drivenparacriaçãodedocumentosdelongoprazo'>parte
2: Message-Driven para la creación de documentos a largo plazo</a></li>
<li><span class='TOCOutline'>3.3</span> <a
href='#ConversoresdeDocumentos-Parte3:RegistrandooconversornoFluig'>parte
3: Registrando el convertidor en TOTVS Fluig Plataforma</a></li>
<li><span class='TOCOutline'>3.4</span> <a
href='#ConversoresdeDocumentos-Parte4:AdicionarolisteneraoservidorFluig'>Parte
4: Añadir el listener al servidor Fluig</a></li>
<li><span class='TOCOutline'>3.5</span> <a
href='#ConversoresdeDocumentos-Parte5:Indicarqueodocumentoutilizaovisualizadorinterno'>parte
5: Indicar qué documento utiliza el visor interno</a></li>
</ul></li>
<li><span class='TOCOutline'>4</span> <a
href='#ConversoresdeDocumentos-ThirdPartyTrademarks'>Third Party
Trademarks</a></li>
</ul>
</div>
</p>
<h1 id="ConversoresdeDocumentos-VisualizaçãodeDocumentos">Visualización
de documentos.</h1>
<p>De forma predeterminada, el visor interno de TOTVS Fluig Plataforma soporta los
formatos de documentos de imágenes, textos y documentos de extensión
PDF. Sin embargo, hay casos en los cuales es necesario que el
visualizador sea soportado en otros formatos de documentos como
planillas DWG, etc.</p>
<p>Con el fin de facilitar la integración con distintos formatos,
TOTVS Fluig Plataforma cuenta con puntos de personalización que permiten que cualquier
formato de archivo sea soportado por el visualizador interno, ya que
existe una herramienta que realiza la conversión de formato deseado a
formato PDF.</p>
<p>
Los documentos deben tener una copia en formato PDF 1.4 para
visualizar internamente en TOTVS Fluig Plataforma, cuya especificación está en <a
href="http://www.adobe.com/devnet/pdf/pdf_reference_archive.html"
style="font-size: 10.0pt; line-height: 13.0pt;" class="external-link"
rel="nofollow">http://www.adobe.com/devnet/pdf/pdf_reference_archive.html</a>
</p>
<p>TOTVS Fluig Plataforma hace la conversión automática a PDF con los documentos de
texto que soporta Microsoft ® Word u OpenOffice.org ™. Para otros
tipos, si se desea utilizar el visualizador interno, se debe armar un
plugin para la conversión a PDF.</p>
<h1 id="ConversoresdeDocumentos-ConhecimentosNecessários">Conocimientos
Necesarios</h1>
<p>Para construir un convertidor es necesario poseer los siguientes
conocimientos:</p>
<ul>
<li>Tecnología <span
style="font-size: 10.0pt; font-family: Arial, sans-serif;">™
Java EE</span></li>
<li><span
style="font-size: 10.0pt; font-family: Arial, sans-serif;">Lenguaje
JavaScript</span></li>
</ul>
<h1 id="ConversoresdeDocumentos-ConstruçãodeumConversor">Construcción
de un convertidor</h1>
<p>
<span style="font-size: 10.0pt; line-height: 13.0pt;">El plugin
de conversión se compone de dos partes:</span>
</p>
<ol>
<li>Un componente EJB Message-Driven, para recibir la solicitud
de conversión;</li>
<li>Aplicación/programa que hará la conversión;</li>
<li>Indicar que el documento utiliza el visor interno.</li>
</ol>
<p>Este capítulo presentará un ejemplo de un convertidor de
archivos de texto (txt) a formato PDF, para que usted pueda utilizarlo
en el visualizador interno de TOTVS Fluig Plataforma.</p>
<p> </p>
<div class="aui-message hint shadowed information-macro">
<p class="title">Importante</p>
<span class="aui-icon icon-hint">Icon</span>
<div class="message-content">
<p>Para ayudarlo, descargue los siguientes códigos:</p>
<p>
<a href="http://tdn.totvs.com/download/attachments/181962771/ECMExternalConvertion-project.zip?version=1&modificationDate=1419960128000&api=v2">ECMExternalConvertion-project.zip</a>
</p>
</div>
</div>
<p> </p>
<p> </p>
<h3 id="ConversoresdeDocumentos-Parte1:ConstruindooEJBMessage-Driven">Parte
1: Construyendo el EJB Message-Driven</h3>
<p class="MsoNormal" style="text-align: justify;">
Crear un Message-Driven que escuche el tema <strong>topic/wdkDocument</strong>:
Le mostramos una fuente de ejemplo:
</p>
<div class="code panel pdl" style="border-width: 1px;">
<div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;">
<b>TxtMessageBean.java</b>
</div>
<div class="codeContent panelContent pdl">
<pre class="first-line: 1; theme: Eclipse; brush: java; gutter: true"
style="font-size: 12px;">paquete com.fluig.conv;
Import javax.ejb.ActivationConfigProperty;
Import javax.ejb.MessageDriven;
Import javax.ejb.MessageDriven;
Import javax.ejb.MessageDriven;
@MessageDriven (nombre = "prueba/TxtConverter', activationConfig = {}
@ActivationConfigProperty (propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
@ActivationConfigProperty (propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
})
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 ();
}
}
}</pre>
</div>
</div>
<p class="MsoNormal" style="text-align: justify;">
El Message-Driven anterior configura la propiedad destinationType para
<strong>"javax.jms.Topic"</strong> para indicar que usted
escuchará un tema JMS, y la propiedad de destino para <strong>"topic/wdkDocument"</strong>
para indicar a qué tema se escuchará. El tema "topic/wdkDocument" es
donde se envían los eventos de publicación de documentos.
</p>
<p class="MsoNormal" style="text-align: justify;">
Al recibir un mensaje, deberá comprobar el tipo de evento publicado
por medio de StringProperty "<strong>evento</strong>", si el valor de
esta propiedad es <strong>"EXTERNALCONVERTION"</strong>, significa que
TOTVS Fluig Plataforma indica que es el momento de ejecutar la conversión
personalizada.
</p>
<p class="MsoNormal" style="text-align: justify;">
Para obtener la ruta del documento, Compruebe la StringProperty <strong>"documentpath"</strong>.
</p>
<p class="MsoNormal" style="text-align: justify;">Después de esto,
se comprueba la extensión del para validar si este es el convertidor
correcto, porque puede haber más de uno para diferentes extensiones.</p>
<p class="MsoNormal" style="text-align: justify;">Cuando se haya
validado los parámetros, se puede llamar entonces al programa de
conversión, que en el caso del ejemplo, fue utilizado el txt2pdf
freeware http://www.verypdf.com/txt2pdf/</p>
<p class="MsoNormal" style="text-align: justify;">El documento de
destino debe tener el mismo nombre más la extensión .pdf y este deberá
quedar en el mismo directorio. Ej: doc.txt convertido: doc.txt.pdf</p>
<p class="MsoNormal" style="text-align: justify;">Le recordamos que
el documento de origen no podrá ser modificado, con la sanción de que
TOTVS Fluig Plataforma indique que se ha cambiado externamente (validación de CRC).</p>
<p class="MsoNormal" style="text-align: justify;">
<span style="font-size: 10.0pt; line-height: 13.0pt;">Message-Driven
deberá empaquetarse e implantarse en el servidor de aplicaciones
conforme las especificaciones de Java ™ EE.</span>
</p>
<p class="MsoNormal" style="text-align: justify;"> </p>
<h3
id="ConversoresdeDocumentos-Parte2:Message-Drivenparacriaçãodedocumentosdelongoprazo">Parte
2: Message-Driven para la creación de documentos a largo plazo</h3>
<p class="MsoNormal" style="text-align: justify;">
<span
style="color: rgb(51, 51, 51); font-size: 10.0pt; font-weight: normal; line-height: 13.0pt;">Se
puede utilizar el Mesage-Driven presentado en el punto anterior para
la creación de documentos a largo plazo, siendo necesario hacer
algunos cambios. Para saber si MEssage-Driven está siendo utilizado
para la creación del archivo a largo plazo, hay un nuevo parámetro
llamado "isLongTerm", este parámetro es una String, y si es igual a
"true" es porque el documento que se desea generar es un PDF/A,
considerado como el archivo a largo plazo.</span>
</p>
<p class="MsoNormal" style="text-align: justify;">
<span style="font-size: 10.0pt; line-height: 13.0pt;">TOTVS Fluig Plataforma
considera sólo el formato PDF/A como formato posible para generar
documentos a largo plazo a través de </span>Message-Driven<span
style="font-size: 10.0pt; line-height: 13.0pt;">.</span>
</p>
<p class="MsoNormal" style="text-align: justify;">
<span style="font-size: 10.0pt; line-height: 13.0pt;"> </span><span
style="font-size: 10.0pt; line-height: 13.0pt;">Para
identificar la creación de un archivo a largo plazo, se debe
modificar el nombre físico del documento, incluyendo la string "PDFĂ"
al final del nombre del archivo. Por ejemplo, si el nombre del
archivo es manual.txt, el nombre de este archivo después de la
conversión será manual.txtPDFA.pdf. Vea el ejemplo a continuación que
ilustra los cambios necesarios en el </span>Message-Driven<span
style="font-size: 10.0pt; line-height: 13.0pt;"> para
crear el documento a largo plazo:</span>
</p>
<div class="code panel pdl" style="border-width: 1px;">
<div class="codeContent panelContent pdl">
<pre class="first-line: 1; theme: Eclipse; brush: java; gutter: true"
style="font-size: 12px;">String longTerm = message.getStringProperty("isLongTerm");
if (doc != null && doc.endsWith(".txt")) {
if (longTerm != null && longTerm.equals("true")) {
String documentName = doc + "PDFA.pdf";
//llamar al método de conversión para PDF/A
}
}</pre>
</div>
</div>
<p class="MsoNormal" style="text-align: justify;">En la primera
línea se recupera el valor del parámetro "isLongTerm" para saber si se
necesita la creación de un archivo a largo plazo. Después de haber
comprobado la extensión del documento, se comprueba el valor de la
variable longTerm, si esta no es nula y es igual a "true", entonces
creamos mediante el llamado del método de conversión de documentos
utilizando el nombre del archivo con string "PDFA.pdf".</p>
<p class="MsoNormal" style="text-align: justify;"> </p>
<h3 id="ConversoresdeDocumentos-Parte3:RegistrandooconversornoFluig">Parte
3: Registrando el convertidor en TOTVS Fluig Plataforma</h3>
<p>En Fluig Studio, haga clic con el botón derecho del mousse en la
carpeta eventos, seleccionar la opción New, y luego la opción Evento
Global Fluig:</p>
<p>
<img class="confluence-embedded-image confluence-content-image-border"
height="329" width="655" src="http://tdn.totvs.com/plugins/servlet/confluence/placeholder/unknown-attachment?locale=pt_BR&version=2"
data-image-src="http://tdn.totvs.com/plugins/servlet/confluence/placeholder/unknown-attachment?locale=pt_BR&version=2">
</p>
<p>
El asistente Evento Nuevo se abre. Selecione el evento <strong>addDocumentConvertionExt </strong>y
luego haga clic en el botón Finish.
</p>
<p>
<img class="confluence-embedded-image"
src="http://tdn.totvs.com/plugins/servlet/confluence/placeholder/unknown-attachment?locale=pt_BR&version=2"
data-image-src="http://tdn.totvs.com/plugins/servlet/confluence/placeholder/unknown-attachment?locale=pt_BR&version=2">
</p>
<p>El evento se agregará al proyecto en copiar eventos y se abrirá
para la edición. El objetivo de este evento global es agregar las
extensiones que tienen un convertidor personalizado. En este ejemplo
es necesario añadir la extensión txt, conforme la fuente a
continuación:</p>
<div class="code panel pdl" style="border-width: 1px;">
<div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;">
<b>addDocumentConvertionExt.js</b>
</div>
<div class="codeContent panelContent pdl">
<pre
class="first-line: 1; theme: Eclipse; brush: javascript; gutter: true"
style="font-size: 12px;">function addDocumentConvertionExt(ext) {
ext.Add ("txt");
}</pre>
</div>
</div>
<div class="aui-message warning shadowed information-macro">
<span class="aui-icon icon-warning">Icon</span>
<div class="message-content">
<p>
<strong>Atención: </strong>Para la impresión de los documentos
publicados con la opción "Actualizar Propiedades de la Copia
Controlada?" <strong>NO</strong> se utilizará el convertidor
externo. Como es necesario aplicar las propiedades de la copia
controlada del documento original y realizar una nueva conversión,
este proceso se puede realizar en tiempo de ejecución con el
convertidor estándar de producto. Por lo tanto, en la impresión del
documento, puede experimentar la pérdida de formateo dependiendo de
recursos visuales aplicados en su contenido (bordes, colores,
imágenes, etc.).
</p>
</div>
</div>
<p class="MsoNormal" style="text-align: justify;"> </p>
<h3
id="ConversoresdeDocumentos-Parte4:AdicionarolisteneraoservidorFluig">Parte
4: Añadir el listener en al servidor Fluig</h3>
<p>
<span
style="color: rgb(51, 51, 51); font-size: 10.0pt; font-weight: normal; line-height: 13.0pt;">Paquete
del </span><em
style="color: rgb(51, 51, 51); font-size: 10.0pt; font-weight: normal; line-height: 13.0pt;">listener
</em><span
style="color: rgb(51, 51, 51); font-size: 10.0pt; font-weight: normal; line-height: 13.0pt;">JMS
y el agregado en < > SERVER FLUIG/jboss/apps /.</span>
</p>
<p style="text-align: center;">
<img class="confluence-embedded-image image-left"
src="http://tdn.totvs.com/plugins/servlet/confluence/placeholder/unknown-attachment?locale=pt_BR&version=2"
data-image-src="http://tdn.totvs.com/plugins/servlet/confluence/placeholder/unknown-attachment?locale=pt_BR&version=2"> 
</p>
<p style="text-align: center;"> </p>
<p style="text-align: center;"> </p>
<p> </p>
<h3
id="ConversoresdeDocumentos-Parte5:Indicarqueodocumentoutilizaovisualizadorinterno">Parte
5: Indicar qué documento utiliza el visor interno</h3>
<p>Ahora que la extensión .txt se registró como poseedora de un
convertidor personalizado, simplemente marque la opción "¿Utiliza
visualizador interno?" en la publicación del documento:</p>
<p>
<img class="confluence-embedded-image" width="500"
src="http://tdn.totvs.com/plugins/servlet/confluence/placeholder/unknown-attachment?locale=pt_BR&version=2"
data-image-src="http://tdn.totvs.com/plugins/servlet/confluence/placeholder/unknown-attachment?locale=pt_BR&version=2">
</p>
<p> </p>
<p>OBSERVACIONES</p>
<ul>
<li>En el ejemplo proporcionado, se presentan ejemplos de
integraciones con los productos <em>Office (Word, Excel y
PowerPoint)</em> creados anteriormente.
</li>
<li>En el ejemplo proporcionado, se presenta un ejemplo de
integración de conversión de formatos <em>DWG</em> utilizando la
herramienta <em>dwg2pdf </em> de la empresa <em>AutoDWG</em>.
</li>
<li>Los códigos de conversión son sólo ejemplos, su desarrollo y
configuración es responsabilidad del desarrollador.</li>
<li>Puede utilizar el <em>plugin<strong> </strong></em>empaquetado
disponible en el anexo. Para la integración con productos de
Microsoft se requiere de ajustes detallados en el <a
href="http://tdn.totvs.com/pages/viewpage.action?pageId=181962711">ambiente de ejecución de Java ®</a>, permitiendo
la comunicación entre el servidor Fluig y los componentes de <em>Office</em>.
</li>
</ul>
</div>
|
Índice
Í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:
- 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 do Fluig.
Informações | ||
---|---|---|
| ||
Para auxiliar faça o download dos códigos a seguir: |
...
effectDuration | 0.5 |
---|---|
id | samples |
history | false |
effectType | fade |
Card | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||
Passo 1: Contruindo o EJB Message-DrivenCriar um Message-Driven que escute o tópico topic/wdkDocument: Segue fonte exemplo:
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.
|
Card | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||
Passo 2: Message-Driven para criação de documentos de longo prazoPode 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:
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".
|
...
id | 3 |
---|---|
label | Passo 3 |
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:
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
function addDocumentConvertionExt(ext) {
ext.add("txt");
} |
Nota |
---|
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). |
Card | ||||
---|---|---|---|---|
| ||||
Passo 4: Adicionar o listener ao servidor FluigEmpacote o listener JMS e o adicione em <SERVER FLUIG>/jboss/apps/.
|
Card | ||||
---|---|---|---|---|
| ||||
Passo 5: Indicar que o documento utiliza o visualizador internoAgora 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:
|
Card | ||||
---|---|---|---|---|
| ||||
Observações:
|
...