/** * 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 ) 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);