O PDFium Delphi Component é uma biblioteca de componentes abrangente e de nível profissional que traz poderosos recursos de processamento e visualização de PDF para aplicações Delphi e C++Builder. Ela usa o motor de renderização PDFium para renderizar páginas e ler documentos, e implementa em Object Pascal tudo o que esse motor não fornece
Essa distinção importa na avaliação da biblioteca. O PDFium desenha páginas, extrai texto e lê estruturas existentes. Ele não consegue assinar um documento, gravar criptografia, validar um padrão de PDF ou emitir uma revisão linearizada ou incremental. O PDFium Delphi Component entrega aproximadamente 115.000 linhas de Object Pascal em 55 units, e mais de 62.000 dessas linhas estão em 36 units que não têm contraparte alguma na API do PDFium — criptografia, assinaturas, cifragem, conformidade com padrões, serialização de PDF, intercâmbio de dados de formulário, layout e text shaping. Tudo é entregue com código-fonte
A biblioteca é composta por três componentes registrados: TPdf para processamento e manipulação de documentos com 475 membros públicos, TPdfView para apresentação visual interativa com 152, e TPdfThumbnailView para navegação por páginas. Se você precisa construir um visualizador de PDF simples, um fluxo de trabalho de documentos assinados, um pipeline de conversão para arquivamento ou um sistema completo de gerenciamento de documentos, o PDFium Delphi Component fornece as ferramentas e a flexibilidade necessárias
As capacidades a seguir não têm contraparte na API C do PDFium. Cada uma é implementada pelo PDFium Delphi Component em Object Pascal, verificada contra as cláusulas publicadas da ISO, ETSI, IETF ou FIPS, e disponibilizada com código-fonte
Assinatura completa, não apenas leitura de assinaturas. O PDFium pode informar que um dicionário de assinatura existe; o PDFium Delphi Component cria um
SignPades, SignPadesToStream e SignPadesBytes/Certs, /OCSPs e /CRLs, dicionários VRI por assinatura e o marcador /Extensions /ESIC/SubFilter /ETSI.RFC3161 cobrindo o arquivo inteiro, para B-LTAICmsSigner que qualquer outro backend pode implementarPreparePadesRemoteSignature e CompletePadesRemoteSignature dividem a operação para que a chave privada permaneça dentro de um serviço remoto ou módulo de hardwareValidatePades informa o nível baseline mais alto que o documento alcança mais códigos de problema por cláusula; ValidatePadesTrust e ValidatePadesTrustAsync acrescentam verificação de confiança da cadeia de certificadosSignPadesWithPdfA converte para PDF/A-4 e assina em uma única chamada, conforme EN 319 142-1 Annex A.7O PDFium abre arquivos criptografados. Ele não grava criptografia. O PDFium Delphi Component implementa o lado de gravação conforme a ISO 32000-2 e suas especificações técnicas
SaveAsEncrypted com derivação de chaves V=5 / R=5 / R=6, incluindo a iteração de hash do algoritmo 2.B, e as entradas de dicionário /O /U /OE /UE /Perms/Length e uma tabela de referência cruzada reconstruída/AuthCode autônomos ISO/TS 32004 — CMS AuthenticatedData com derivação de chaves HKDF, key wrapping e verificação HMACSeis famílias de padrões ISO, cada uma com um validador que retorna códigos de resultado por cláusula e um caminho correspondente de salvamento ou injeção de marcadores
O motor oferece um único salvamento sequencial do arquivo inteiro. As aplicações frequentemente precisam de mais que isso, então o PDFium Delphi Component grava suas próprias revisões sobre a saída semântica do motor
SaveAsLinearized produz arquivos Fast Web View com agrupamento da primeira página, duas seções de referência cruzada e tabelas de dicas Annex F de deslocamento de páginas e objetos compartilhadosSaveAsObjectStream agrupa objetos elegíveis em /ObjStm com ordenação local por página e cobertura completa de referência cruzada type-2BeginIncrementalSave e CommitIncrementalSave anexam apenas objetos indiretos alterados e novos a fontes criptografadas ou não criptografadas, preservando a saída anterior byte a byte junto com /Prev, /Encrypt, /Info e o /ID permanente; um commit sem alterações não aumenta o arquivoSaveAsRepaired grava uma cópia de revisão única e a reverifica com um carregamento estrito independente antes de entregá-laTPdf.PdfVersion reutiliza o estado do parser do PDFium e executa apenas uma verificação de cabeçalho de oito bytes em vez de reanalisar o documento de origemTPdfRandomAccessStore mantém dados intermediários na memória até SaveMemoryLimit e então migra para um arquivo temporário exclusivo excluído no fechamento; o pós-processamento do salvamento principal usa a mesma política para os três espaços de trabalho, enquanto as atualizações padrão de open-action e do catálogo de rótulos de página usam janelas limitadas e um índice esparso/AF da ISO 32000-2 §7.11.4 anexados ao catalog ou a uma página de destino, com os oito valores de relação da Table 45IPdfOcrProvider aceita qualquer motor de reconhecimento — o componente fornece os bitmaps das páginas e grava a camada de texto pesquisável resultante, com status por página e salto de texto existenteGetStructuredText constrói uma hierarquia de página / bloco / linha / span estilizado a partir da geometria de caracteres e da semântica Tagged PDF; ExtractTables e ExtractDocumentTables detectam tabelas com bordas e alinhadas por espaços em branco, preservam células mescladas, pontuam confiança e emitem CSV ou JSONBuildReflowDocument transforma um PDF de layout fixo em uma árvore de nós cuja saída HTML segura preserva cabeçalhos, parágrafos, listas, figuras, seções de página e spans de tabelaMeasureText e WrapText fornecem quebra de linha sem adicionar nada a uma páginaTPdfStreamInspector decodifica objetos de stream arbitrários sob orçamentos explícitos de fonte, dados brutos, dados decodificados, taxa de expansão e contagem de streams, retornando um status estruturado em vez de esgotar a memória com um arquivo maliciosoO coração do sistema de processamento de PDF, o TPdf cuida de todas as operações no nível do documento, incluindo carregamento, salvamento, extração de texto, processamento de formulários e gerenciamento de metadados
Um controle visual sofisticado que oferece uma experiência rica de visualização de PDF com recursos completos de interação do usuário
TStream sob demanda via LoadCustomDocument, com as políticas compatible, strict e recovery, além de diagnósticos estruturados de xrefSaveAsRepairedSaveAsPdfA / SaveAsPdfAToStream com perfil ICC sRGB incluso e suporte a perfis personalizadosValidatePdfA e propriedade somente leitura PdfAConformanceMergeFiles (mesclagem em lote com fontes limitadas), ImportPagesByIndex (importação de subconjunto), ImportNPagesToOne (grade N-up), MovePages (reordenação no local)CreateXObjectFromPage e InsertFormObjectFromXObjectRenderPageProgressive e IPdfCancellationTokenTPdfProgressiveDocument, incluindo dicas esparsas de intervalos de bytes, agendamento priorizado de intervalos, repetições limitadas, cancelamento e barreiras de disponibilidade de documento, formulário e páginaSaveAsLinearized, incluindo agrupamento da primeira página, duas seções de referência cruzada e tabelas de dicas Annex F de deslocamento de páginas e objetos compartilhadosSaveAsObjectStream, incluindo grupos ObjStm limitados, ordenação local por página e cobertura completa de xref type-2BeginIncrementalSave e CommitIncrementalSave, incluindo preservação do prefixo criptografado, parâmetros de segurança herdados, commits sem efeito, validação estrita de reabertura, arquivos secundários duráveis, substituição atômica, rollback e estatísticas por commitTPdfRandomAccessStore e SaveMemoryLimit, incluindo transbordamento seguro para arquivo temporário, E/S posicionada e diagnósticos de pico por salvamentoFitMode escolhe como a página se ajusta na viewport (zoom manual, tamanho real, ajustar à página, ajustar à largura); reaplicado automaticamente em Resize / mudança de páginaPageColor desacopla o fundo da página PDF renderizada da cor Color do controle ao redor para visualizadores em modo escuroHighlightSearchText e ClearHighlightPageShadowSize / PageShadowColor) e borda da página (PageBorderColor)LinkOptions) e eventos OnAnnotationLinkClick / OnWebLinkClickAllowUserPageChange, ChangePageOnMouseScrolling, AllowUserTextSelection) para quiosques e incorporações somente leituraTPdfThumbnailView| Aspecto | Detalhes |
|---|---|
| Motor de Renderização | Google PDFium - Motor de PDF padrão da indústria, comprovadamente testado |
| Suporte a PDF | Versões de PDF 1.0 a 1.7, arquivos criptografados e protegidos por senha |
| Compatibilidade de Plataforma | Aplicações Windows de 32 e 64 bits |
| Suporte a IDE | Delphi XE5 / C++Builder XE5 (RAD Studio XE5) até Delphi/C++Builder 13.1 Florence (RAD Studio 13.1), Lazarus 3.8+ |
| Codificação de Caracteres | Suporte completo a Unicode, processamento de texto multilíngue |
| Gerenciamento de Memória | Otimizado para documentos grandes, uso eficiente de recursos |
| Segurança de Threads | Design single-threaded (conforme os requisitos do PDFium) |
O PDFium Delphi Component segue um padrão de arquitetura em camadas que separa claramente as responsabilidades e maximiza a reutilização de código:
| Camada | Arquivos | Responsabilidade |
|---|---|---|
| Componentes VCL | PDFium.pas, FPdfThumbnail.pas | Componentes VCL Delphi (TPdf, TPdfView, TPdfThumbnailView) com suporte em tempo de design |
| Bindings da API | FPdfView.pas, FPdfDoc.pas, FPdfText.pas, FPdfEdit.pas, FPdfAnnot.pas, FPdfFormFill.pas, FPdfPageOps.pas, FPdfAttachment.pas, FPdfSignature.pas, FPdfStructTree.pas, FPdfDataAvail.pas, FPdfExtensions.pas, FPdfFWLEvent.pas, FPdfCompress.pas, FPdfUtils.pas | Declarações de ponteiros de função para chamadas da DLL PDFium |
| Pipeline PDF/A | FPdfPdfa.pas | Criação de PDF/A-1b (injeção de XMP, OutputIntent ICC sRGB, atualização do Catalog) e validação (detecção de conformidade, enumeração de problemas) |
| Infraestrutura Assíncrona | FPdfAsync.pas | IPdfCancellationToken / IPdfCancellationTokenSource, singleton PdfNoCancellationToken e auxiliar TPdfFuture<T> para trabalho de renderização e exportação de longa duração |
| Auxiliares de Geometria | FPdfMatrix.pas | Wrapper OO em torno de FS_MATRIX com auxiliares Translate, Scale, Rotate, Flip, Skew e Multiply |
| Operações de Página | FPdfPageOps.pas | Wrappers para FPDF_ImportPagesByIndex, FPDF_ImportPages, FPDF_ImportNPagesToOne, FPDF_MovePages, agendamento escalável de lote com suporte em arquivo, além de auxiliares de Form-XObject (CreateXObjectFromPage / InsertFormObjectFromXObject) |
| Painel Lateral de Miniaturas | FPdfThumbnail.pas | TPdfThumbnailView — painel rolável de miniaturas por página com hover, seleção e navegação OnPageClick |
| Motor Nativo | DLLs\Win32|Win64\pdfium.dll e pdfium.v8.dll | Motor de renderização nativo Google PDFium, com builds opcionais habilitadas para V8 |
TPdf e 36 projetos prontos para executar reduzem o tempo de desenvolvimentoO PDFium Delphi Component foi projetado para produtividade imediata. A biblioteca de componentes inclui:
Seja para construir um visualizador de PDF simples ou um sistema complexo de processamento de documentos, o PDFium Delphi Component fornece a base para funcionalidades profissionais de PDF em suas aplicações Delphi e C++Builder