Show / Hide Table of Contents
Editar no GitHub

Representação Visual

A representação visual na assinatura de PDF é a inclusão de um texto ou imagem contendo informações sobre a assinatura que está interna ao documento. Dependendo do software de visualização do PDF, esta representação pode fazer uma ligação com os dados e propriedades da assinatura e do signatário.

Cada representação visual é sempre relativa a apenas uma assinatura no PDF e cada assinatura pode ter até uma representação visual.

As informações da representação visual a serem incluídas na assinatura são controladas pela classe PadesVisualRepresentation2. Nas seções abaixo exploraremos as opções, parâmetros e customizações na definição de uma representação visual para assinaturas em PDF.

Elementos da Representação Visual

A classe de representação visual PadesVisualRepresentation2 possui 3 elementos que podem ser definidos: Position, Text e Image. A lista abaixo introduz os elementos da representação visual. Para mais informações verifique o guia da API de cada classe.

  • Posição

    A posição do retângulo da representação visual da assinatura é customizável através das classes PadesVisualAutoPositioning e PadesVisualManualPositioning.

    • Posicionamento Automático

      O posicionamento automático é indicado para casos em que pode-se definir uma região (container) em uma página do PDF que irá receber a representação das assinaturas. Este modo irá organizar as assinaturas em série dentro da região especificada. A figura abaixo exemplifica o comportamento do posicionamento automático. O retângulo vermelho representa o container definido no qual as representações visuais serão posicionadas automaticamente em série.

      Visual representation auto positioning

    • Posicionamento Manual

      O posicionamento manual é indicado para os casos em que cada representação das assinaturas serão inseridas em posições arbitrárias, por exemplo a posição e a página serem informados pelo usuário.

      Visual representation manual positioning

  • Texto

    As informações textuais a serem inseridas na representação visual da assinatura são customizáveis através da classe PadesVisualText.

  • Imagem

    É possível incluir uma imagem de fundo na representação visual da assinatura, podendo também customizar sua opacidade e seu alinhamento dentro do retângulo da representação visual. Estas opções são definidas através da classe PadesVisualImage.

Posicionamento Manual

No posicionamento manual, define-se a página na qual a representação da assinatura será inserida e a posição e tamanho do retângulo de assinatura em relação à página.

A página é especificada pela propriedade PageNumber. Números negativos são contados a partir do final do documento (-1 significa última página, -2 penúltima, etc). Pode-se usar o valor especial 0 (zero), que especifica que a representação da assinatura deve ser colocada em uma nova página em branco adicionada ao final do documento.

A posição do retângulo de assinatura em relação à página é especificada pela propriedade SignatureRectangle. Um retângulo pode ter os parâmetros Top, Bottom, Left, Right, Width e Height conforme mostrado na figura abaixo.

PAdES rectangle

Por exemplo, para especificar que a representação visual deve ser inserida na última página do documento, tendo tamanho 7cm de largura e 3cm de altura, ficando a 2.5cm das margens esquerda e inferior, conforme a imagem abaixo, escreveríamos o seguinte código:

PAdES visual representation manual positioning

var signer = new PadesSigner();
...
var signatureVisualRep = new PadesVisualRepresentation2() {
    Position = new PadesVisualManualPositioning() {
        PageNumber = -1,                                    // Define inserção na última página do documento
        SignatureRectangle = new PadesVisualRectangle() {
            Width = 7,                                      // Largura = 7cm
            Height = 3,                                     // Altura = 3cm
            Left = 2.50,                                    // Distância da margem esquerda = 2.50cm
            Bottom = 2.50                                   // Distância da margem inferior = 2.50cm
        }
    },
    Text = ...,
    Image = ...
};
signer.SetVisualRepresentation(visual);

Para mais informações sobre como definir a posição da representação da assinatura, veja o artigo Definindo um container.

Posicionamento Automático

No posicionamento automático, assim como no manual, é preciso especificar a página na qual a representação visual será inserida. Entretanto, ao invés de se definir o posicionamento da representação visual em relação à página, define-se um container que irá receber as representações das sucessivas assinaturas realizadas no documento e o tamanho de cada retângulo de assinatura dentro do container.

O container de assinaturas é definido pela propriedade Container. De maneira similar à especificação do retângulo de assinatura no posicionamento manual, o container pode ter os parâmetros Top, Bottom, Left, Right, Width e Height. Já o tamanho de cada retângulo de assintura (altura e largura) é definido pela propriedade SignatureRectangleSize.

A propriedade RowSpacing define o espaçamento entre as "linhas" das representações visuais. Os retângulos de assinaturas das representações visuais são inseridos da esquerda para direita e quando não há mais espaço, são inseridas em uma nova linha respeitando o RowSpacing passado.

Por exemplo, para especificar que as representações visuais devem ser inseridas sucessivamente na última página do documento dentro de um container espaçado 2.5cm das bordas esquerda, direita e inferior e 10cm da borda superior, sendo que cada retângulo de assinatura deve ter 7cm de largura por 3cm de altura, conforme ilustrado na imagem abaixo, escreveríamos o seguinte código:

PAdES visual representation auto positioning

var signer = new PadesSigner();
...
var signatureVisualRep = new PadesVisualAutoPositioning() {
    Position = new PadesVisualAutoPositioning() {
        PageNumber = -1,                             // Define inserção na última página do documento
        Container = new PadesVisualRectangle() {
            Left = 3.00,                             // Distância da margem esquerda = 3.00cm
            Right = 3.00,                            // Distância da margem direita = 3.00cm
            Bottom = 2.00,                           // Distância da margem inferior = 2.00cm
            Top = 8.00                               // Distância da margem superior = 8.00cm
        },
        SignatureRectangleSize = new PadesSize(7, 3), // Tamanho de cada retângulo de assinatura (largura x altura),
        RowSpacing = 1                               // 1.00cm de espaçamento entre linhas
    },
    Text = ...,
    Image = ...
};
signer.SetVisualRepresentation(visual);
Note

O container que definimos acima tem altura e largura variáveis. Essa é uma das muitas possibilidades de especificação do container de assinaturas. Para mais informações, veja o artigo Definindo um container.

As assinaturas realizadas com o código acima terão o resultado esperado conforme a imagem abaixo:

PAdES visual representation auto positioning result

Posicionamento de texto e imagem

  • Texto

    Interno ao retângulo da representação visual da assinatura, o SDK permite a customização do alinhamento, posição e conteúdo do texto a ser inserido. A posicionamento do texto pode ser controlado através da definição de um Container. Se nenhum container for definido, o texto preencherá todo o retângulo de assinatura.

    Como exemplo, definiremos um posicionamento do texto relativo ao retângulo de assinatura conforme a figura abaixo.

    PAdES visual text

    var text = new PadesVisualText() {                          // Texto da representação visual
        SignerName = signingCert.SubjectDisplayName,            // Inclui o nome do signatário
        IncludeSigningTime = true,                              // Inclui a data da assinatura
        Container = new PadesVisualRectangle() {                // Define container do texto
            Left = 0,
            Top = 0,
            Right = 1.5,
            Bottom = 0.5
        }
    };
    

    Verifique as customizações de texto possíveis nas propriedades no guia da API PadesVisualText.

  • Imagem

    Também é possível definir uma imagem de fundo para o retângulo de assinatura e customizar sua opacidade e alinhamento. Verifique as customizações de texto possíveis nas propriedades no guia da API PadesVisualImage.

Veja também

  • PadesVisualRepresentation2
  • PadesVisualText
  • PadesVisualImage
  • PadesVisualAutoPositioning
  • PadesVisualManualPositioning
Back to top Copyright © 2015-2020 Lacuna Software