Ir al contenido

Creación de plantillas LibreOffice

Registre la definición del grupo de metadatos en Administration > Metadata.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 3.10//EN"
"http://www.openkm.com/dtd/property-groups-3.10.dtd">
<property-groups>
<property-group label="Sample Template" name="okg:tpl">
<input label="Name" name="okp:tpl.name"/>
<input label="Birth Date" name="okp:tpl.birth_date" type="date" />
<select label="Language" name="okp:tpl.language" type="simple">
<option label="Java" value="java"/>
<option label="Python" value="python"/>
<option label="PHP" value="php" />
</select>
</property-group>
</property-groups>

Para relacionar el campo del formulario de la plantilla con el grupo de metadatos, debe nombrarlos siguiendo una convención de nomenclatura: sustituya “:” y “.” por “_”. Aquí puede ver la correspondencia entre ambos campos:

Nombre del campo de metadatos Nombre del campo de plantilla Valor del campo de plantilla
okp:tpl.name okp_tpl_name ${okp_tpl_name!}
okp:tpl.birth_date okp_tpl_birth_date ${okp_tpl_birth_date?date!}
okp:tpl.language okp_tpl_language ${okp_tpl_language!}

El campo que se sustituirá por el valor de una variable pasada a la plantilla puede especificarse usando la notación estándar de expresiones FreeMarker, escribiendo el nombre de la variable en el documento como texto plano de la siguiente forma:

Hi ${name}!

Sin embargo, mezclar instrucciones de procesamiento y texto normal en el documento puede resultar confuso y recargar el diseño. Por eso JODReports ofrece una forma alternativa de insertar campos. Puede insertar un campo visual en LibreOffice Writer desde el menú Insert / Fields / Other… (o simplemente pulsando Ctrl+F2), luego haga clic en la pestaña Functions y seleccione Input field. Cambie la referencia del campo a JOOScript. En el campo Content, introduzca el nombre de la variable (p. ej. “$name”). Este campo normalmente se mostrará en Writer como un rectángulo gris con el nombre de la variable, y al pasar el ratón por encima se mostrará la referencia del campo.

Este es el documento de LibreOffice usado en este ejemplo tpl.odt.

Lea más sobre las plantillas de LibreOffice en JODReports.

JODReports usa FreeMarker internamente, así que puede aprovechar la flexibilidad de formato de FreeMarker. Por ejemplo, puede establecer formatos de fecha de esta forma:

${okp_tpl_birth_date?string("yyyy-MM-dd")}

Si la fecha puede ser nula, necesita comprobarlo (en el caso de las plantillas ODT debe usar #if entre “[” y “]”):

[#if okp_tpl_birth_date??]${okp_tpl_birth_date?string("yyyy-MM-dd")}[/#if]

Aprenda más sobre el formato de FreeMarker en Built-in Reference.

Incluso puede usar la funcionalidad de plantillas para generar tablas dinámicas. Veamos un ejemplo.

En la captura puede ver un documento con una tabla. La cabecera tiene un fondo de color y también está en negrita. El script muestra las opciones para generar las cabeceras de la tabla.

Este es el documento de LibreOffice usado en este ejemplo: dynamic_table.odt

Aprenda más sobre esta funcionalidad en:

  • Suba el fichero tpl.odt a /okm:templates/documents
  • Registre la definición de metadatos okg:tpl en Administration > Metadata
  • Habilite los metadatos desde profiles en Administration > Profiles
  • Añada el grupo de metadatos okg:tpl al fichero tpl.odt.