Passar para o conteúdo principal

Guia para o Uso do Editor de PDF no DataScope

Aprenda a configurar o Editor de PDF Personalizado da DataScope: funções comuns, expressões avançadas e funções nativas do motor que o impulsiona.

Escrito por Jessica Franco

O Editor de PDF do DataScope é uma ferramenta poderosa que permite personalizar e configurar seus relatórios de forma eficiente. Neste guia, explicaremos algumas funções e dicas para aproveitar ao máximo essa funcionalidade.


📌 Configuração e Uso do Editor de PDF Personalizado

Como acessar o Editor de PDF?

  1. Acesse Formulários > Configurar > Configurar PDF > PDF Personalizado.

  2. Clique no botão "Abrir Editor PDF".

📌 Estrutura do Editor de PDF

  • Componentes disponíveis: no lado esquerdo, você encontrará ferramentas como textos, tabelas, códigos de barras/QR, cabeçalhos, rodapés, entre outros.

  • Propriedades do componente: no lado direito, você poderá personalizar cada elemento selecionado.

📌 Como adicionar e vincular componentes

  1. Adicionar um componente: arraste o elemento desejado para a posição correspondente no documento.

  2. Vincular dados:

    • Clique duas vezes no componente.

    • Selecione "Insert Data Field" e escolha a pergunta ou o campo correspondente.

    • Principais campos:

      • name: nome da pergunta.

      • value: resposta inserida no formulário.

💡 Dica: os dados devem ser estruturados entre {% %}. Por exemplo:

{% {variable_aqui::value} %}

📌 Principais funções do Editor de PDF

1. Transformação de valores vazios

  • Os valores vazios são exibidos como um -. Você pode usar essa lógica para configurar funções que transformem um valor vazio em um valor específico.

  • Exemplo: para exibir um texto alternativo quando um campo estiver vazio, use:

{% {variable_aqui::value}=='-' ? 'Texto alternativo' : {variable_aqui::value} %}

2. Configuração de perguntas repetíveis

  • Em perguntas repetíveis, as variáveis a partir de _5 devem usar a função empty para tratar valores vazios.

{% empty({variable_aqui::value}) ? ' ' : {variable_aqui::value} %}

3. Ocultar páginas vazias

  • As páginas vazias são ocultadas automaticamente quando você configura a formatação condicional clicando com o botão direito na página.

4. Atribuidor de tarefas

  • Variáveis disponíveis ao atribuir tarefas:

    • Endereço

    • Código legal da empresa

    • Nome legal da empresa

    • Código único do local

    • Descrição do local

📌 Funções comuns

1. Exibir valores específicos

  • Para exibir um valor com base em uma condição:

{% {variable aqui::value}=='Sim' ? 'x' : ' ' %}
  • Para exibir um valor quando não houver resposta:

{% {variable aqui::value}=='-' ? 'Texto padrão' : {variable aqui::value} %}
  • Para tratar campos vazios:

{% empty({variable aqui::value}) ? ' ' : {variable aqui::value} %}

2. Operações matemáticas

  • Somar valores quando houver respostas vazias (-):

{% ({variable aqui::value}=='-' ? 0 : {variable aqui::value}) + ({variable 2 aqui::value}=='-' ? 0 : {variable 2 aqui::value}) … + ({variable n aqui::value}=='-' ? 0 : {variable n aqui::value}) %}
  • Média de 2 variáveis:

{% (({variable aqui::value}=='-' ? 0 : {variable aqui::value}) + ({variable 2 aqui::value}=='-' ? 0 : {variable 2 aqui::value})) / (2) %}
  • Condição para o denominador quando não houver respostas:

{% {variable aqui::value}=='-' ? 0.00001 : 1 %}

Isso é usado para evitar que o denominador seja 0 caso não haja respostas (quando o valor for '-'). O valor mínimo para o denominador será 0.00001 quando não houver resposta.

  • Cálculo da média condicional entre 2 variáveis (somente se existirem 2 respostas):

{% (({variable aqui::value}=='-' ? 0 : {variable aqui::value}) + ({variable 2 aqui::value}=='-' ? 0 : {variable 2 aqui::value})) / (({variable aqui::value}=='-' ? 0.00001 : 1)+ ({variable 2 aqui::value}=='-' ? 0.00001 : 1)) %}

Esse cálculo funciona da seguinte maneira:

  • Se uma das variáveis não tiver resposta (for '-'), ela será considerada como 0 em vez de um valor nulo.

  • Para o denominador, se alguma das variáveis não tiver resposta, será utilizado 0.00001 para evitar uma divisão por zero.

É importante usar essa condição com decimais, pois se você usar 0 diretamente na divisão sem considerar essa regra, ocorrerá um erro de divisão por zero.

  • Soma e multiplicação de elementos quando não houver resposta ('-'):

Se você quiser realizar cálculos com vários elementos e considerar 0 quando não houver resposta ('-'), poderá usar a seguinte fórmula:

{% (({variable aqui::value}=='-' ? 0 : {variable aqui::value}) * ({variable 2 aqui::value}=='-' ? 0 : {variable 2 aqui::value}) * ({variable 3 aqui::value}=='-' ? 0 : {variable 3 aqui::value}) … + ({variable n aqui::value}=='-' ? 0 : {variable n aqui::value}) %}

Esse exemplo realiza uma multiplicação de várias variáveis. Se alguma variável não tiver resposta ('-'), ela será substituída por 0 para evitar erros.

Preste atenção aos parênteses, pois eles são muito importantes para considerar toda a expressão como um único valor e evitar erros de linguagem.


3. Datas e horários

  • Data atual:

{% date('now') %}
  • Formato de data personalizado:

{% date({Variable aqui}, 'UTC', 0, 'd/m/Y') %}
  • Converter uma variável do formulário criado para um formato específico:

{% date({created_at}, 'UTC', 0, 'd/m/Y') %}
  • Converter minutos em horas:

{% floor({minutos_variable}/60) %} horas, {% (({minutos_variable}/60) - floor({minutos_variable}/60)) * 60 %} minutos
  • Horário em horas e minutos:

{% floor((({Variable tempo aqui::value})/60) %}:{%(((({Variable tempo aqui::value})/60)-floor((({Variable tempo aqui::value})/60))*60 %}
  • Formatar uma variável de data no formato dd/mm/yyyy para "10 de Abril de 2023":

{% split('-',{k_FechaHora 5_5::value})[0] %} de {% split('-',{k_FechaHora 5_5::value})[1] =='01' ? 'Janeiro' : split('-',{k_FechaHora 5_5::value})[1] =='02' ? 'Fevereiro' : split('-',{k_FechaHora 5_5::value})[1] =='03' ? 'Março' : split('-',{k_FechaHora 5_5::value})[1] =='04' ? 'Abril' :split('-',{k_FechaHora 5_5::value})[1] =='05' ? 'Maio' :split('-',{k_FechaHora 5_5::value})[1] =='06' ? 'Junho' : split('-',{k_FechaHora 5_5::value})[1] =='07' ? 'Julho' : split('-',{k_FechaHora 5_5::value})[1] =='08' ? 'Agosto' : split('-',{k_FechaHora 5_5::value})[1] =='09' ? 'Setembro' : split('-',{k_FechaHora 5_5::value})[1] =='10' ? 'Outubro' : split('-',{k_FechaHora 5_5::value})[1] =='11' ? 'Novembro' : split('-',{k_FechaHora 5_5::value})[1] =='12' ? 'Dezembro' : ' '  %} de {% split('-',{k_FechaHora 5_5::value})[2] %}
  • Adicionar dias a uma data:

{% date ({k_Fecha_2_2::value}, 'UTC' ,27, 'd/m/Y' ) %} Isso adiciona 27 dias à data.
  • Obter a diferença de horas em minutos:

{% empty(split(":",{k_Hora fin_12_17::value})[1]) || empty(split(":",{k_Hora inicio_12_15::value})[1]) ? '-' : 1440*(split(":",{k_Hora fin_12_17::value})[0] < split(":",{k_Hora inicio_12_15::value})[0]) + (split(":",{k_Hora fin_12_17::value})[0] - split(":",{k_Hora inicio_12_15::value})[0])*60 + split(":",{k_Hora fin_12_17::value})[1] - split(":",{k_Hora inicio_12_15::value})[1] %}

4. Assinaturas e imagens em HTML

  • Fotos como HTML (para usar em tabelas):

<p><img src="{foto_aqui::value}" width="80" height="100"></p>
  • Assinaturas como HTML (para usar em tabelas):

<p><img src="{firma_aqui::value}" width="80" height="100"></p>
  • Deixar uma descrição vazia quando não houver imagem em uma pergunta repetível em _4 (Repetição 5):

  1. Usando uma condição para verificar se a variável possui o valor '-' (sem imagem):

{% {variable aqui::value}=='-' ? ' ' : 'descrição da foto' %}

Nesse caso, se não houver imagem (valor '-'), uma descrição vazia (' ') será exibida.

2. Usando a função empty para verificar se a variável está vazia:

{% empty({variable aqui::value}) ? ' ' : 'descrição da foto' %}

Nesse caso, se a variável estiver vazia (sem imagem), uma descrição vazia também será exibida.


📌 Dicas avançadas

  • Condições aninhadas

Use & para "e" e | para "ou":

{% ({variable_1::value} + {variable_2::value}) <= 3 & ({variable_2::value}) >= 1 ? 'Aceito' : 'Rejeitado' %}
  • Exibir GPS

Exibe um mapa estático com coordenadas GPS:

https://maps.googleapis.com/maps/api/staticmap?size=700x700&maptype=roadmap&markers=icon:https://www.mydatascope.com/assets/favicon.ico%7Csize:mid%7Clabel:1%7C{k_Descripcin_9_9::latitude},+{k_Descripcin_9_9::longitude}&visible={k_Descripcin_9_9::latitude},+{k_Descripcin_9_9::longitude}&zoom=15&key=AIzaSyB39JUuV_2N_2i-bh6tzAfPcEWxeUh777c
  • Separador de listas relacionadas

Se você precisar dividir um valor usando um separador, poderá utilizar o seguinte código:

{% split('-',{variable aqui::value})[0] %}

O número 0 indica a posição do texto que está antes do separador selecionado. Para obter o texto depois do separador, você pode alterar o índice (por exemplo, [1]).

  • Split sobre Split (2)

Se precisar usar um split dentro de outro split, utilize o seguinte exemplo:

{% split(':',{split('|',{variable aqui::value})[2] })[1] %}

Primeiro, isso divide a variável usando o separador |, depois seleciona o terceiro elemento (índice [2]) e, em seguida, divide esse elemento novamente usando :.

  • Split sobre Split (3)

Se precisar fazer um split dentro de outro split de uma forma mais complexa, utilize este código:

{% split(‘-’,{split(':',{split('|',{variable aqui::value})[2] })[1]})[1] %}

Este exemplo realiza várias divisões da variável: primeiro com o separador |, depois com : e, por fim, com -.

  • Usar HTML para exibir imagens

Se quiser exibir uma imagem dentro de um HTML usando um split, utilize este código:

<p><img src="{split(':',{split('| ',{assign_description})[16] })[1]}" width="80" height="100"></p>

Este exemplo divide o valor de {assign_description}, seleciona o 17º elemento (índice [16]) e, em seguida, exibe uma imagem usando o src obtido.

  • Exibir um link para download de um arquivo anexado

Se quiser incluir um link para que os usuários possam baixar um arquivo anexado, utilize o seguinte código HTML:

<p><a href="{k_Adjuntar Archivo 0_247::value}">Baixar arquivo anexado 1</a></p>

Esse código cria um link que permite aos usuários baixar o arquivo vinculado à variável {k_Adjuntar Archivo 0_247::value}. O texto do link será "Baixar arquivo anexado 1".

💡 Dica

Se precisar incluir condições nos seus relatórios personalizados, poderá usar expressões condicionais como esta:

{% {variable aqui::value}=='Sim' ? 'x' : ' ' %}

Isso funciona da seguinte maneira:

  • ?: define o resultado quando a condição é verdadeira (por exemplo, exibe 'x' se a variável for igual a "Sim").

  • :: define o resultado quando a condição é falsa (por exemplo, exibe um espaço em branco se a variável não for "Sim").

Exemplo prático:

{% {variable::value}=='Sim' ? 'Aprovado' : 'Pendente' %}
  • Se a resposta for "Sim", será exibido "Aprovado".

  • Caso contrário, será exibido "Pendente".

Use essa lógica para criar relatórios dinâmicos e claros!


📌 Boas práticas

  • Valide seus códigos: sempre teste as funções em um ambiente de teste antes de implementá-las em produção.

  • Use os parênteses corretamente: certifique-se de que as expressões estejam corretamente agrupadas para evitar erros.

  • Configure formatações condicionais: simplifique a visualização ocultando elementos desnecessários.

  • Salve as alterações regularmente: certifique-se de salvar todas as alterações antes de fechar a sessão ou mudar de tela, pois não existe uma opção de desfazer (Ctrl+Z).

  • Evite usar Ctrl+Z: como ele não funciona para desfazer ações, é fundamental salvar com frequência.

  • Use apenas uma aba ao trabalhar no editor: para evitar conflitos ou perda de dados, é recomendado manter apenas uma aba aberta enquanto trabalha no editor.

Para mais informações ou assistência, entre em contato conosco pelo chat de suporte.

Respondeu à sua pergunta?