iflow 4.2.0 PDF Generator User's Guide English Version 1.0 iflow 4.2.0 PDF Generator User's Guide Written by: Paulo Ponte Tiago Velho Revised by:



Documentos relacionados
Base de dados I. Uma base de dados é um simples repositório de informação relacionado com um determinado assunto ou finalidade

8. Perguntas e Respostas

1.2. Na pasta Os meus documentos, crie um website de uma página, com o nome paggrupo.

DotNetNuke. Gestão de Conteúdos. Módulos - II. Inserção de conteúdos nos módulos. Módulo de Text/HTML. Módulo de Sre-Notícias. Módulo de Sre-Formação

Tutorial exe elearning XHTML editor (versão 1.0x)

Aumentar o nível de acessibilidade nos PDFs existentes

UTILIZANDO RECURSOS E ATIVIDADES NO MOODLE

Visão Artificial Para a Indústria. Manual do Utilizador

Portal do Projeto Tempo de Ser

Desenvolvimento em Ambiente Web. HTML - Introdução

Guia rápido de criação e gestão de um espaço no SAPO Campus

Scientific Electronic Library Online

Amostras e guias de iniciação Versão 8 Edição 0. Guia de iniciação do Hiring Sample para o IBM Process Designer

Catálogo Nacional de Compras Públicas. Manual de Fornecedores

Curriculum DeGóis Guia de preenchimento do Curriculum Vitae (Informação mínima necessária)

MANUAL DE UTILIZAÇÃO DO EQUIPA TIC

MS PowerPoint. O que é? Gestão Comercial e da Produção

Manual de Utilizador. Caderno. Recursos da Unidade Curricular. Gabinete de Ensino à Distância do IPP.

MAGic. Software para ampliação de ecrã

MANUAL DE UTILIZAÇÃO

4.1. UML Diagramas de casos de uso

UNIPAMPA Universidade Federal do Pampa. Núcleo de Tecnologia da Informação (NTI)

Procedimentos para a divulgação de eventos no site da ECUM

HTML Página 1. Índice

Manual do Usuário - ProJuris Web - Biblioteca Jurídica Página 1 de 20

Manual do Fénix. Portal Secretaria da Escola Portal Conselho Científico Portal Direcção de Curso. Candidatura Online para o 2.

MANUAL DE PROCEDIMENTOS PLATAFORMA DE INSCRIÇÕES ONLINE

Manual do Teclado de Satisfação Online WebOpinião

2 echo "PHP e outros.";

Usando o NVU Parte 2: Inserindo imagens

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

Expansão de Imagem #2

Módulo de registo de eventos. guia de utilização

REDES INTEGRADAS DE TELECOMUNICAÇÕES II 2011 / 2012

Instituto Politécnico de Tomar Escola Superior de Tecnologia de Abrantes Curso Superior de Comunicação Social. Exercicio Nº 4 de Word

PHP. Hypertext Pre-Processor

Actualizaç ões e novas funcionalidades. Inoxnet. Versã o (c) EBASE Lda.

1. Criar uma nova apresentação

Introdução ª Parte - Acesso à Aplicação Avaliação Online... 4 I Aceder à Aplicação Inscrição Acesso à Aplicação...

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Verifique se o Plugin do Flash Player está instalado no seu computador para a navegação adequada no portal.

1 Introdução. 2 Funcionamento da Aplicação. Projeto de Programação - Entrega Final MEEC / Semestre Farm:TamagoISTi

2ºCiclo (5º e 6º Anos de escolaridade) 3ºCiclo (7º e 8º Anos de escolaridade)

Intel Teach Program Essentials Course. Tutorial para wik.is

Aula de JavaScript 05/03/10

Manual de Administração Intranet BNI

Boletim Eletrônico de Recolhimento Manual do Sistema. Boletim Eletrônico de Recolhimento. Manual do Sistema

GUIA DE PREENCHIMENTO DO FORMULÁRIO. GESTÃO DA MEDIDA 511 Assistência Técnica FEADER

INSTITUTO DO EMPREGO E FORMAÇÃO PROFISSIONAL I.E.F.P CENTRO EMPREGO E FORMAÇÃO PROFISSIONAL DE ÉVORA. Ficha Formativa

APOSTILA DE EXEMPLO (Esta é só uma reprodução parcial do conteúdo)

C-se Mail - Workr. Página Inicial. Insira seu usuário ( ) cadastrado no ato da liberação de acesso e sua senha (criada a partir de uma

JavaScript (ou JScript)

Módulo 3936 ASP.NET. Financiado pelo FSE

Portal da Imprensa Regional. Actualizações e Correcções

Introdução. Introdução a HTML. A Linguagem HTML. Estrutura de uma Página. Mário Antonio Meireles Teixeira

Laboratório de Hardware

PÓS-GRADUAÇÃO EM MATEMÁTICA COMPUTACIONAL INFORMÁTICA INSTRUMENTAL Aula 06: Introdução Linguagem HTML

MULTIACERVO Implementações da versão 20-1

Índice. 5. Editar as seções de um curso 6. Estruturar o curso 7. Publicar o curso 8. Resumo do Fluxo de criação de um curso no educommons

Arquimedes e Controle de Obra

Representação de Algoritmos - Linguagens de Programação

Ao redigir este pequeno guia pretendi ser conciso, indo directamente ao essencial.

Engenharia de Software e Sistemas Distribuídos. Enunciado Geral do Projecto

Astra LX Frases Codificadas Guia para o processo de Configuração de Frases Codificadas no Programa AstraLX.

Tutorial :: Introdução ao VHDL em ambiente Design Works

Controladores Lógicos Programáveis

Manual do Fénix. Gestão de Curriculum. SI (Versão 1.0)

Guião de exploração 1 do

Como Começar? Criação Páginas. Etapas. Apresentação INTERNET

Módulo 1 Microsoft Word 2007 ( 4 Horas)

Vejamos um exemplo. Vamos supor que queiramos montar uma tabela 3X2, ou seja de 3 colunas por 2 linhas, o código HTML para isso é :

ESTRATÉGIAS /ACTIVIDADES. Fazer uma abordagem teórica e simples

Autor: Tiago Lone Nível: Básico Criação: 19/12/2005 Última versão: 18/12/2006. PdP. Pesquisa e Desenvolvimento de Produtos

Engenharia Informática Engenharia Electrotécnica e Computadores Programação Orientada por Objectos Projecto PlayCards

O uso correto do texto alternativo

SADFoto v1.1 Sistema Automatizado de Digitalização de Fotografias Manual de utilização

Criar um formulário do tipo Diálogo modal ; Alterar a cor de fundo de um formulário; Inserir botões de comando e caixas de texto;

INTRODUÇÃO À LINGUAGEM C++

Ferramentas Web, Web 2.0 e Software Livre em EVT

Agrupamento de Escolas de São João da Pesqueira Planificação Anual de 120 Tempos de 50m Introdução às Tecnologias da Informação e Comunicação PIEF

Orientações para Usuários

Programação Orientada a Objetos: Lista de exercícios #1. Bruno Góis Mateus

P S I 2. º A N O F 5 M E S T R E / D E T A L H E E P E S Q U I S A. Criar uma relação mestre-detalhe. Pesquisa de informação

SOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum

Superintendência Regional de Ensino de Ubá - MG Núcleo de Tecnologia Educacional NTE/Ubá. LibreOffice Impress Editor de Apresentação

ftp://ftp.cr-df.rnp.br/pub/netinfo/training/rnp/kit-bsb/html/guia5.zip 1996 Tutorial - Autoria em World Wide Web

Programação. MEAer. Bertinho Andrade da Costa. Instituto Superior Técnico. Introdução ao Pré-Processador. 2011/2012 1º Semestre

7. Cascading Style Sheets (CSS)

UNIDADE 1 TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

O Gerenciamento de Documentos Analógico/Digital

O Manual do ssc. Peter H. Grasch

Manual Sistema Débito Web Adsis/Disao Criado em 23/04/2012

Tutorial Moodle ESDM - professores

Manual para criar actividades com o Jclic. Versão 1.0. Manual de Luís Vives Traduzido e adaptado por. Milena Jorge

ALGORITMOS E FLUXOGRAMAS

GESTÃO DE INFORMAÇÃO PESSOAL OUTLOOK (1)

MANUAL DO UTILIZADOR

Como fazer um jogo usando o editor de apresentação

COORDENAÇÃO DE EAD MANUAL DE UTILIZAÇÃO DO MOODLE 2.6 PERFIL ALUNO. Versão 1.0

Transcrição:

iflow 4.2.0 PDF Generator User's Guide English Version 1.0 Written by: Paulo Ponte Tiago Velho Revised by: João Costa Released: 2012-11-06 Technical/Manuals/ Infosistema, 2012

Table of Contents 1 Introduction... 4 1.1 Overview... 4 1.2 Audience... 4 2 Basic Concepts... 5 2.1.1 Replacement Expressions... 5 2.2 Execution Flow Control... 5 2.3 Controlo IF... 5 2.4 Controlo ATABLE... 7 2.5 Controlo FOR... 11 2.6 Controlo FOREACH... 11 2.7 Controlo WHILE... 11 2.8 Images... 13 2.9 Fontes e tipos de letra... 13 @2012 Infosistema 2

Glossary of Terms PDF Generator java library to generate PDFs from XSL-FO templates and data structures Process Catalogue list of all process variables either system or user defined, available in the flow @2012 Infosistema 3

1 Introduction 1.1 Overview IFlow uses a library to generate PDF files from XSL-FO templates and process data. This document is a user's guide for PDF Generator, with the aim of supporting the user in building and maintaining iflow workflows. 1.2 Audience This manual is intended for those that develop and maintain workflows for running in iflow, using XSL-FO templates for PDF generation. It is not intended for end users or business process analysts, which will interface with iflow through a browser, on a frontend to the server. @2012 Infosistema 4

2 Basic Concepts 2.1.1 Replacement Expressions Replacement expressions allow to replace expressions from simple text to complex mathematical calculation. Expressions are evaluated from a scripting language based in Java called BeanShell. Expressions are replaced as: $expressão : tipo de dados $ Os tipos de dados disponíveis são: # c código: Avalia a expressão mas não apresenta o resultado. # t texto: Avalia a expressão e substitui pelo valor (sem formatação) # e euro: Avalia a expressão e devolve o valor formatado como valor monetário em euros. # p percentagem: O valor numérico resultante é formatado como percentagem. # r real: O valor numérico como número real. # d data: A data resultante é apresentada no formato dd/mm/aaaa. # i inteiro: O valor numérico é formatado como número inteiro, sem casas decimais. # s substituição: Funcionalidade avançada. (TODO documentar) Exemplo: $ carro:t $ = volvo $ preco:e $ = 35.000,00 IVA: $ preco*0.21:e $ = IVA: 7.350,00 2.2 Execution Flow Control Cada controlo deverá ficar num único parágrafo, consistindo apenas no texto de controlo. Isto porque, a partir do momento em que é identificado um parágrafo de controlo, ele será removido. Isto poderá trazer algum transtorno, uma vez que o texto não vai ficar conforme desenhado no processador de texto. 2.3 Controlo IF O bloco de controlo IF serve para incluir texto de acordo com uma ou mais condições. As condições serão avaliadas usando BeanShell e deverão resultar num valor booleano. @2012 Infosistema 5

A sintaxe do controlo IF é a seguinte: #if : condição1 # Texto a incluir se a condição 1 for verdadeira #elseif : condição 2 # Texto a incluir se a condição 2 for verdadeira... #elseif : condição n # Texto a incluir se a condição n for verdadeira #else# @2012 Infosistema 6

Texto a incluir se nenhuma das condições anteriores for verdadeira. #end# O #endif# ainda é admitido para manter a compatibilidade com versões anteriores da biblioteca. Exemplo #if:(carro.equals("volvo"))# O Carro é um Volvo. O Carro é um Volvo. #elseif:(carro.equals("mercedes") carro.equals("bmw"))# O Carro é uma bomba!! #else# O Carro é um chasso velho. #end# Resultado 2.4 Controlo ATABLE O controlo ATABLE permite representar listas de forma tabular, reconstruindo uma tabela com repetição de linhas e/ou remoção de colunas de uma tabela template. A sintaxe é a seguinte: #atable:variável : valor inicial : valor final : incremento# seguida de uma tabela template. Não existe tag para marcar o fim do processamento de tabela. A tabela de template é definida da seguinte forma: 1. Linha de controlo de colunas, em que cada célula da tabela contém a tag #if: condição #. A coluna correspondente a cada célula só é apresentada se a condição for verdadeira. Esta não será apresentada no resultado final. 2. Cabeçalho da tabela que corresponde à primeira linha sem informação de controlo. 3. Linhas de controlo de linha (opcional). Na primeira célula de cada linha da tabela poderá ser introduzida uma tag que indica processamento especial para a linha em que se encontra. Isto permite substituir ou remover linhas da tabela template. As tags disponíveis são as seguintes: 1. #showif: condição # - Caso a condição seja verdadeira, apresenta esta linha e termina o ciclo de replicação de linhas. 2. #removeif: condição # - Não apresenta esta linha se a condição for verdadeira. 3. #header# - Indica que esta linha deverá ser acrescentada ao cabeçalho da tabela. 4. #footer# - Indica que esta linha deverá ser acrescentada ao rodapé da tabela. 4. Linhas normais que serão repetidas sem restrições. @2012 Infosistema 7

Usando a informação na tag atable, é gerado um ciclo, criando a variável variavel com o valor valor inicial no interpretador beanshell que será incrementada em valores de incremento até alcançar o valor valor final. Em cada iteração do ciclo as linhas da tabela template serão repetidas pela ordem em que são encontradas, interrompendo a repetição de linhas caso a linha de controlo assim o obrigue (por exemplo, #showif: condição #). Exemplo, o controlo ATABLE seguinte: @2012 Infosistema 8

#atable:ii:0:10:1# #if:true# #if:(carro.equals("volvo"))# #if:false# Coluna 1 Coluna 2 Coluna 3 #showif:ii == 4# Aparece se ii é 4 Também aparece se ii é 4 ii é 4 #removeif:ii==7# Removido se ii é 7 Também é removido se ii é 7 ii não é 7 Linha normal: ii=$ii:i$ A mesma linha normal Ainda a linha normal irá gerar a tabela seguinte: Coluna 1 Coluna 2 ii não é 7 Removido se ii é 7 Linha normal: ii=0 Coluna do Volvo ii não é 7 Removido se ii é 7 Linha normal: ii=1 Coluna do Volvo ii não é 7 Removido se ii é 7 Linha normal: ii=2 Coluna do Volvo ii não é 7 Removido se ii é 7 Linha normal: ii=3 Coluna do Volvo ii é 4 Aparece se ii é 4 ii não é 7 Removido se ii é 7 Linha normal: ii=5 Coluna do Volvo ii não é 7 Removido se ii é 7 Linha normal: ii=6 Linha normal: ii=7 Coluna do Volvo Coluna do Volvo ii não é 7 Removido se ii é 7 Linha normal: ii=8 Coluna do Volvo ii não é 7 Removido se ii é 7 Linha normal: ii=9 Coluna do Volvo NOTA: A tabela gerada contém informação para manter as linhas repetidas juntas na mesma página. O resultado final está dependente das heurísticas de typesetting do FOP. Outro efeito indesejado é a altura das linhas da tabela quando são introduzidas linhas de controlo. Se o gerador/conversor de FO incluir informação com a altura das linhas, esta será preservada, o que pode levar à geração de uma tabela com linhas de tamanhos diferentes. A inclusão outros controlos ATABLE dentro de um @2012 Infosistema 9

controlo ATABLE não é suportada. @2012 Infosistema 10

2.5 Controlo FOR O controlo FOR segue a lógica do ATABLE, mas para um pedaço de texto em vez de uma linha da tabela template. A sintaxe é a seguinte: #for: variável : valor inicial : valor final : incremento # Para ilustar o funcionamento do controlo FOR, temos o seguinte exemplo: Exemplo #for:i:0:10:1# Linha 0 Linha $i:i$ Linha 1 #end# Linha 2 Linha 3 Linha 4 Linha 5 Linha 6 Linha 7 Linha 8 Linha 9 Resultado 2.6 Controlo FOREACH O controlo FOREACH é uma alternativa controlo FOR. Em vez de usar um ciclo controlado por incrementos numéricos, itera-se nos elementos de uma lista ou array. A sintaxe é a seguinte: #foreach: variável : lista ou array # #foreach:item:stock# Item: $item:t$ #end# Exemplo Item: parafusos Item: porcas Item: anilhas Resultado 2.7 Controlo WHILE O controlo WHILE efectua um ciclo enquanto uma expressão for verdadeira. A sintaxe é a seguinte: #while: expressão # Exemplo Resultado $k=0:c$ Item: 1 @2012 Infosistema 11

#while:k<3# Item: 2 Item: $++k:i$ Item: 3 #end# Outros processamentos Para além de controlos específicos para o fluxo de execução do processador de XSL-FO, foral definidos alguns controlos adicionais de apresentação. @2012 Infosistema 12

2.8 Images É possível gerar PDFs com imagens incluidas no documento original. No entanto, por vezes as imagens não são incluidas correctamente durante a fase de conversão para XSL-FO. Para facilitar a inclusão de imagens, foi criado o controlo IMAGE. A sintaxe é a seguinte: #image: largura : altura : URI #. O bloco de texto onde o controlo IMAGE foi encontrado será substituido por uma inclusão de imagem. A imagem encontra-se no URI indicado (pode ser relativo ou pode ser um URL absoluto). Opcionalmente, pode-se definir uma largura e altura para a imagem. Os caracteres separadores : deverão prevalecer caso a altura e/ou largura não sejam definidos. A imagem será apresentada centrada no local onde se encontra: página, célula de tabela, etc. Exemplo # image:200:50:"infosistema.png" # Resultado 2.9 Fontes e tipos de letra O controlo FONT foi definido para contornar o problema de quando uma determinada fonte não está disponível no computador onde foi escrito o documento usado para gerar o ficheiro XSL-FO. Para tal, deverá ser indicado um descriptor da fonte a usar. A sintaxe é a seguinte: #font:descriptor da fonte# O descriptor é uma string, avaliada pelo BeanShell, que corresponde ao valor da propriedade font definida na norma CSS2 e resume informação sobre família (tipo de letra), tamanho, estilo, etc. Infelizmente, o FOP apenas consegue reconhecer informação sobre família e tamanho. Por esse motivo o descriptor deverá tomar o seguinte valor: <tamanho> <família> Para mais informações, consultar: http://www.renderx.com/tutorial.html - Font and Text Attributes (link) XSL-FO - Formatting Properties (link) FOP Compliance Page - Common Font Attributes (link) @2012 Infosistema 13

Na tabela seguinte são apresentados alguns exemplos de fontes: @2012 Infosistema 14

Exemplo Resultado #font:"10pt ocrb10"# 1234567890 1234567890 abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ Aqui times; Aqui helvetica; Aqui é times; Aqui courier; Aqui é helvetica; Aqui é courier; #end# #font:"14pt Times"# 1234567890 1234567890 abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ Aqui é times; Aqui é times; Aqui é helvetica; Aqui é helvetica; Aqui é courier; Aqui é courier; #end# #font:"10pt Helvetica"# 1234567890 1234567890 abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ Aqui é times; Aqui é helvetica; Aqui é times; Aqui é courier; Aqui é helvetica; Aqui é courier; #end# #font:"8pt Arial Black"# 1234567890 abcdefghijklmnopqrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz Aqui é times; ABCDEFGHIJKLMNOPQRSTUVWXYZ Aqui é helvetica; Aqui é courier; Aqui é times; Aqui é helvetica; Aqui é courier; #end# NOTA: É necessário possuir uma licença para embeber fontes num ficheiro PDF, inclusivamente as fontes padrão do PDF. Observações Existem algumas observações e/ou limitações relacionadas com as bibliotecas e ferramentas utilizadas. Processador de Texto Por vezes o processador de texto utilizado gera dois blocos de texto consecutivos, partindo uma frase em duas partes. Do ponto de vista do utilizador não existe diferença, uma vez que o texto aparece seguido, mas do ponto de vista de implementação poderá impedir a correcta detecção de expressões e/ ou controlos. Uma forma de contornar este problema é seleccionar toda a expressão/texto que deveria ser @2012 Infosistema 15

detectado e aplicar o mesmo estilo ou limpar a formatação. @2012 Infosistema 16

No entanto, esta limitação poderá ser explorada para apresentar texto que de outra forma seria detectado como expressão ou controlo, como é o caso deste documento. Conversor RTF para XSL-FO Por vezes os processadores de texto possibilitam a introdução de objectos externos como caixas de texto, botões, formatações complicadas e/ou funcionalidades específicas da aplicação. Como o conversor não consegue lidar com estes objectos externos, ignora-os, não sendo reflectidos no resultado final. Esta limitação não só se aplica a este conversor, mas sim a todos os conversores de qualquer ficheiro para XSL-FO. FOP 0.95 beta O FOP (versão 0.95 beta) é a biblioteca que faz a transformação do documento XSL-FO para PDF, contém algumas limitações. Apesar de ser uma versão beta, encontra-se estável e corrige alguns bugs relacionados com o carregamento de fontes. Para mais informação, consultar: Apache FOP (link) Apache FOP Compliance (link) Inclusão de imagens e outros recursos externos Por vezes as imagens não são detectadas e/ou encontradas. Para facilitar a detecção de imagens externas, foi alterado o código para pesquisar de acordo com a seguinte ordem: 1. Classpath Tenta abrir a imagem como java resource 2. Classpath Igual ao anterior, mas acrescentar o caracter / ao inicio da localização do recurso 3. Sistema de ficheiros Procura o recurso no directório actual 4. Sistema de ficheiros Procura o recurso no directório fonts 5. Sistema de ficheiros Procura o recurso num directório indicado programaticamente 6. Localizações por omissão definidas na ferramenta FOP NOTA: Esta funcionalidade também é utilizada para localizar ficheiros de fontes para incluir no PDF. BeanShell O BeanShell é um motor de scripting com sintaxe semelhante ao Java. Este é usado para avaliar todas as expressões utilizadas no documento, assim como alguns dos parametros passados ao vários controlos de fluxo de execução. Para mais informação, consultar: BeanShell - Lightweight scripting for Java (link) Tabelas e controlo ATABLE Por vezes a tabela resultante do controlo ATABLE não tem os contornos de linhas, células ou colunas da tabela. Isto está relacionado com a forma com que a tabela foi formatada no processador de texto. É frequente ocorrer com o cabeçalho da tabela ou quando se remove a última coluna, uma vez que se econtram no interior da tabela template. Caso esta situação ocorra, deverá ser seleccionada a célula/ coluna/linha em questão e forçar a criação dos contornos para cada célula ou linha. @2012 Infosistema 17

@2012 Infosistema 18