feat: add SDK support for PDF document signing and visual seal customization tools

This commit is contained in:
Claudecio Martins
2026-10-11 18:34:47 -03:00
parent d8d2e6ee46
commit b46d8b665f
12 changed files with 3497 additions and 121 deletions
+52
View File
@@ -90,3 +90,55 @@ A posição e a página da estampa são parametrizáveis via `PdfSignatureOption
- **Filtro:** `/Filter /Adobe.PPKLite` e `/SubFilter /adbe.pkcs7.detached`.
- **Algoritmo:** `SHA256withRSA` / PKCS#1 v1.5 com digest SHA-256.
- **Salva Incremental:** Preserva a integridade de assinaturas anteriores e do documento original sem quebrar certificações prévias.
---
## 5. Ferramentas Web do SDK (@cybercore/signer-sdk)
O SDK web fornece componentes visuais nativos em JavaScript vanilla para aplicações web:
### 5.1 `PdfStampPicker` (Posicionador Visual de Selo)
Permite que o usuário final suba um PDF no navegador, folheie páginas, selecione cantos predefinidos ou arraste a estampa visual interativamente. O componente mapeia as coordenadas do canvas para o sistema de coordenadas do PDFBox (ISO 32000, com origem no canto inferior esquerdo) e gera em tempo real o payload JSON para a requisição.
```javascript
import { PdfStampPicker } from '@cybercore/signer-sdk';
const picker = new PdfStampPicker({
container: '#picker-container',
pdfSource: pdfArrayBuffer, // ou URL / Base64
initialScale: 1.0,
onPositionChange: (pos) => {
console.log('Página:', pos.page, 'X:', pos.x, 'Y:', pos.y);
}
});
// Obtém parâmetros prontos para a requisição CCSP
const stampConfig = picker.getStampConfig();
```
### 5.2 `PdfSealDesigner` (Criador & Personalizador de Selos)
Componente interativo com live preview em SVG vetorial para personalização de selos:
- Paleta de cores primária, secundária, fundo e texto.
- Ícones vetoriais (`shield`, `certificate`, `lock`) e upload de logotipo em Base64.
- Regras LGPD para mascaramento ou ocultação de CPF/CNPJ.
- Exportação da configuração JSON para envio inline via `seal_custom` na requisição `signPdfDocument()`.
### 5.3 Assinatura Completa via Base64 (`signPdfDocument`)
Permite enviar o PDF completo em Base64 e receber de volta o PDF assinado completo em Base64 para envio direto ao backend:
```javascript
const result = await signer.signPdfDocument({
certificateId: cert.id,
pdf: pdfArrayBuffer, // ou base64
page: stampConfig.page,
x: stampConfig.x,
y: stampConfig.y,
scale: stampConfig.scale,
seal_theme_id: 'icp-brasil', // ou seal_custom: customSealConfig
reason: 'Documento homologado',
location: 'São Paulo, SP'
});
console.log('PDF Assinado Base64:', result.signed_pdf);
console.log('SHA-256 do Documento Final:', result.sha256);
```