docs(sdk): add comprehensive integration examples in sdk/examples
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
/**
|
||||
* Exemplo 03: Assinatura de PDF Completo PAdES com Selo Visual
|
||||
*
|
||||
* Demonstra como assinar um arquivo PDF aplicando o selo gráfico ICP-Brasil ou Gov.br
|
||||
* estilizado pelo CyberCore Signer, retornando o PDF assinado completo em Base64/Blob.
|
||||
*/
|
||||
|
||||
import { CyberCoreSigner } from '@cybercore/signer-sdk';
|
||||
|
||||
async function main() {
|
||||
const signer = new CyberCoreSigner({
|
||||
applicationName: 'Assinador de Contratos Online'
|
||||
});
|
||||
|
||||
await signer.connect();
|
||||
|
||||
// 1. Consulta os temas de selos visuais disponíveis no agente
|
||||
const themesResp = await signer.getSealThemes();
|
||||
console.log('Selo padrão configurado:', themesResp.default_seal_id);
|
||||
console.log('Temas disponíveis:', themesResp.seals.map(s => s.name).join(', '));
|
||||
|
||||
// 2. Mock de um PDF de teste (no navegador, normalmente é obtido via <input type="file">)
|
||||
const fakePdfContent = Buffer.from('%PDF-1.4\n1 0 obj\n<< /Type /Catalog >>\nendobj\n%%EOF');
|
||||
|
||||
const certs = await signer.getCertificates();
|
||||
if (certs.length === 0) {
|
||||
console.error('Nenhum certificado para assinatura.');
|
||||
return;
|
||||
}
|
||||
|
||||
// 3. Executa a assinatura com estampa gráfica posicionada no rodapé da última página
|
||||
console.log('Enviando solicitação de assinatura PAdES...');
|
||||
const result = await signer.signPdfDocument({
|
||||
pdf: fakePdfContent,
|
||||
certificateId: certs[0].id,
|
||||
documentName: 'contrato_prestacao_servicos.pdf',
|
||||
position: 'BOTTOM_RIGHT',
|
||||
pageChoice: 'LAST_PAGE',
|
||||
scale: 1.0,
|
||||
visibleSeal: true,
|
||||
sealThemeId: 'icp-brasil',
|
||||
reason: 'Concordância integral com os termos do contrato',
|
||||
location: 'Brasília - DF',
|
||||
cpfDisplayMode: 'MASKED', // Exibe CPF mascarado no carimbo (ex: ***.456.789-**)
|
||||
includeDateTime: true,
|
||||
customExtraInfo: 'Matrícula: 55420-9'
|
||||
});
|
||||
|
||||
console.log('PDF assinado com sucesso!');
|
||||
console.log('Titular:', result.subjectName);
|
||||
console.log('CPF/CNPJ:', result.subjectCpfCnpj);
|
||||
console.log('Tamanho do PDF assinado:', result.signedPdf.length, 'caracteres Base64');
|
||||
|
||||
// No navegador web, você pode invocar diretamente:
|
||||
// result.download('contrato_assinado.pdf');
|
||||
// Ou obter os bytes binários para envio via fetch/multipart:
|
||||
const pdfBytes = result.getSignedPdfBytes();
|
||||
console.log('Bytes binários gerados:', pdfBytes.length);
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
Reference in New Issue
Block a user