Esse é um pacote escrito inteiramente em PHP para assinar PDF's com suporte a multiplas assinaturas.
composer require jeidison/pdf-signer
Assinando documentos:
$pathFileCertificate = 'path_do_seu_arquivo.pfx';
$passwordCertificate = 'senha do seu pfx';
$fileContent = file_get_contents('path_do_seu_certificado.pdf');
$fileContentSigned = Signer::new()
->withCertificate($pathFileCertificate, $passwordCertificate)
->withContent($fileContent)
->sign();
file_put_contents('path_onde_vc_quer_salvar_o_seu_pdf.pdf', $fileContentSigned);
Assinando documentos com metadados(Razão, Nome, Local, Informações de contato):
$pathFileCertificate = 'path_do_seu_arquivo.pfx';
$passwordCertificate = 'senha do seu pfx';
$fileContent = file_get_contents('path_do_seu_certificado.pdf');
$fileContentSigned = Signer::new()
->withCertificate($pathFileCertificate, $passwordCertificate)
->withContent($fileContent)
->withMetadata(
Metadata::new()
->withReason('ASSINATURA DE DOCUMENTOS PARA TESTES.')
->withName('JEIDISON SANTOS FARIAS')
->withLocation('Araras/SP')
->withContactInfo('Jeidison Farias <[email protected]>')
)
->sign();
file_put_contents('path_onde_vc_quer_salvar_o_seu_pdf.pdf', $fileContentSigned);
Assinando documentos com assinatura visível:
$pathFileCertificate = 'path_do_seu_arquivo.pfx';
$passwordCertificate = 'senha do seu pfx';
$fileContent = file_get_contents('path_do_seu_certificado.pdf');
$fileContentSigned = Signer::new()
->withCertificate($pathFileCertificate, $passwordCertificate)
->withContent($fileContent)
->withSignatureAppearance(
SignatureAppearance::new()
->withImage('/path_do_seu_icone.png')
->withRect([350, 770, 400, 820])
)
->sign();
file_put_contents('path_onde_vc_quer_salvar_o_seu_pdf.pdf', $fileContentSigned);
Adicionando carimbo de tempo na assinatura:
// Ainda não implementado.