felipesales007 / assinatura-digital

Projeto para realizar assinaturas digitais em documentos PDF.
https://www.felipesales.com.br/
31 stars 22 forks source link

Exibição visual da assinatura #2

Open inovecomm opened 4 years ago

inovecomm commented 4 years ago

Olá, acabei de conhecer o projeto e gostaria de saber se existe alguma forma de exibir a assinatura no PDF. Algo mais ou menos assim: https://www.djpdv.com.br/wp-content/uploads/2017/10/certificado8.png.

Consegui fazer a assinatura funcionar, mas precisava conseguir exibir ela no arquivo.

felipesales007 commented 4 years ago

Opa, a assinatura já demonstra essas informações contidas na imagem (sem a imagem do adobe no fundo), porém configurei para a informações (dados da assinatura) aparecer em cima da folha do PDF, o local onde a assinatura (informações) irá aparecer é configurável.

inovecomm commented 4 years ago

Opa Felipe, obrigado pela resposta. Entendi agora. E você consegue me explicar como faço para posicionar no lugar que preciso?

No caso seria um contrato meio longo, tem 23 páginas, aí eu queria colocar só na última página e mais ou menos no meio da página, como essa imagem que eu mandei.

felipesales007 commented 4 years ago

Em assinatura-digital/app/Http/Controllers/PDFController.php

Eu definir para os dados da assinatura digital aparecer no cabeçalho do PDF como mostra em (linhas 85 e 86): // criando o cabeçalho do PDF com as informações do certificado $pdf->SetHeaderData('', 2, 'Assinado de forma digital por', $info, array(0, 0, 0), array(255, 255, 255));

E além de definir onde será mostrados as informações no PDF você tem que definir onde será a área clicável para se obter os dados no PDF, ou seja você tem que definir onde vai aparecer os dados e onde será a área clicável para mostrar mais dados do certificado (linhas 109 e 110):

// área do certificado para clique no PDF $pdf->setSignatureAppearance(14.5, 3, 95, 20);

Ou seja para atender ao seu pedido você terá que ver em https://tcpdf.org/ como colocar as informações que esta na variável $info (na linha 86) e colocar em outro local no PDF, no seu caso no final da folha, lembrando que você tem que alterar o local onde ficará a parte clicável do documento para a assinatura.

inovecomm commented 4 years ago

Então Felipe, consegui posicionar mais ou menos onde queria dessa forma, que copiei direto da documentação do TCPDF: $pdf->MultiCell( 300, 300, $text, $border = 0, $align = 'J', $fill = false, $ln = 1, $x = 10, $y = 250, $reseth = true, $stretch = 0, $ishtml = true, $autopadding = true, $maxh = 0, $valign = 'T', $fitcell = false );

$pdf->setSignatureAppearance(10, 250, 300, 300, 20);

Consegui posicionar, mas não gerou nenhuma área clicável. Tem alguma ideia do porque?

felipesales007 commented 4 years ago

A área clicável deve esta em alguma parte da tela, ela fica transparente só quando você passa o mouse você vê que o campo é clicável, recomendo ir posicionando aos poucos em seu teste para ver o real posicionamento da área clicável.

por exemplo: $pdf->setSignatureAppearance(14.5, 3, 95, 20); depois $pdf->setSignatureAppearance(30, 3, 95, 20); depois $pdf->setSignatureAppearance(30, 30, 95, 20);

para você ir vendo mais ou menos onde a área clicável esta.

inovecomm commented 4 years ago

Então, corrigindo o que eu falei, a área clicável criou mas não faz nada, não leva pra lugar nenhum.

felipesales007 commented 4 years ago

Se ao passar o mouse na área clicável o ponteiro do mouse muda, e você clica ele deveria abrir uma aba lateral no Adobe PDF, vale lembrar que essa informação só aparece no Adobe PDF, PDF no navegador a área clicável não aprece e nem mostra nada mesmo.

inovecomm commented 4 years ago

Então, eu estou utilizando um leitor de PDF online, nele a área aparece, mas dão pra clicar, Vou tentar pelo Adobe.