Ir para o conteúdo

04 - PDF/A, Hash e veraPDF

Status: Implemented

Objetivo

Garantir que o artefato arquivístico seja um PDF/A-2b válido e que o hash oficial represente exatamente os bytes finais persistidos.

PDF/A

  • O engine padrão de geração deve ser compliance.
  • O engine legacy so pode ser usado por configuração explícita e deve marcar o documento como nao conforme para preservação.
  • O PDF final deve declarar PDF/A-2b, conter output intent válido e XMP consistente.
  • Qualquer pos-processamento que altere bytes deve ocorrer antes do hash oficial.

Hash

Hash oficial — sequência no EnfaseCloud.Scan (estação):

  1. gerar PDF;
  2. aplicar XMP e metadados;
  3. aplicar OCR pesquisável quando configurado;
  4. calcular SHA-256 sobre os bytes finais do artefato da estação;
  5. gravar hash no manifesto local.

A assinatura ICP-Brasil/PAdES não faz parte desta sequência na estação. Ela é aplicada pela WebApi na nuvem, após upload e persistência. O hash aqui calculado representa o artefato pré-assinatura. Quando assinado, o hash do artefato assinado é calculado e registrado separadamente pela WebApi.

Nunca calcular hash definitivo antes da ultima mutação do arquivo.

veraPDF

O sistema deve executar veraPDF para PDFs declarados como PDF/A.

Resultado esperado:

  • valid: arquivo aprovado no perfil exigido.
  • invalid: arquivo reprovado com lista de erros.
  • not_run: validador indisponivel ou etapa desativada.
  • error: falha de execução.

Em produção, not_run nao deve ser tratado como conforme.

política de bloqueio

  • RequirePdfAForUpload=false: aceitar upload, registrar alerta e status.
  • RequirePdfAForUpload=true: bloquear PDF invalido ou validação nao executada.
  • documentos digitalizados pelo Scan devem ser bloqueados se PDF/A nao for válido.

Aceite

  • O SHA-256 gravado bate com os bytes finais.
  • Um PDF/A-2b válido passa no veraPDF.
  • Um PDF comum e marcado como invalido.
  • A heuristica XMP nao substitui veraPDF em produção.

Implementação

Entregues (status: Implemented)

Requisito Implementação Arquivo
PDF/A-2b via engine compliance PdfComplianceService.ComposeFromPages + output intent sRGB Library/Services/PdfComplianceService.cs
Engine legacy por configuração PdfGeneration:Engine=legacy no appsettings Scan/Scan/ScanCaptureService.cs
SHA-256 sobre bytes finais SHA256.HashData(composed.PdfBytes) após ApplyConarqXmpMetadata Scan/Scan/ScanCaptureService.cs
XMP consistente com manifesto ApplyConarqXmpMetadata com mcgi:hashValor Library/Services/PdfComplianceService.cs
TIFF G4 nativo para P&B Driver PaperStream IP entrega TIFF G4 via TwainDirectCaptureService Scan/Scan/TwainDirectCaptureService.cs
TIFF LZW para cinza ConvertToGrayscaleTiff via System.Drawing.EncoderParameters Scan/Scan/ScanCaptureService.cs
PNG para cor/auto Mantido — iText embute como FlateDecode Scan/Scan/ScanCaptureService.cs

Pendente

Requisito Situação
veraPDF formal em produção not_run — validador requer pipeline/host. RequirePdfAForUpload controla bloqueio.