PDFium Delphi Component es una biblioteca de componentes integral y de calidad profesional que aporta capacidades potentes de procesamiento y visualización de PDF a aplicaciones de Delphi y C++Builder. Usa el motor de renderizado PDFium para el renderizado de páginas y la lectura de documentos, e implementa en Object Pascal todo lo que ese motor no proporciona
Esta distinción importa al evaluar la biblioteca. PDFium dibuja páginas, extrae texto y lee estructuras existentes. No puede firmar un documento, escribir cifrado, validar un estándar PDF ni emitir una revisión linearizada o incremental. PDFium Delphi Component incluye aproximadamente 115,000 líneas de Object Pascal repartidas en 55 unidades, y más de 62,000 de esas líneas están en 36 unidades que no tienen contraparte alguna en la API de PDFium — criptografía, firmas, cifrado, conformidad con estándares, serialización PDF, intercambio de datos de formulario, diseño y conformación de texto. Todo se entrega como código fuente
La biblioteca consta de tres componentes registrados: TPdf para el procesamiento y manipulación de documentos con 475 miembros públicos, TPdfView para la presentación visual interactiva con 152, y TPdfThumbnailView para la navegación de páginas. Ya sea que necesite construir un visor de PDF simple, un flujo de trabajo de documentos firmados, una canalización de conversión para archivo o un sistema completo de gestión documental, PDFium Delphi Component proporciona las herramientas y la flexibilidad que usted requiere
Las capacidades siguientes no tienen contraparte en la API C de PDFium. Cada una está implementada por PDFium Delphi Component en Object Pascal, verificada contra las cláusulas publicadas de ISO, ETSI, IETF o FIPS, y disponible como código fuente
Firma completa, no solo lectura de firmas. PDFium puede informar que existe un diccionario de firma; PDFium Delphi Component crea uno
SignPades, SignPadesToStream y SignPadesBytes/Certs, /OCSPs y /CRLs, diccionarios VRI por firma y el marcador /Extensions /ESIC/SubFilter /ETSI.RFC3161 que cubren el archivo completo, para B-LTAICmsSigner que cualquier otro backend puede implementarPreparePadesRemoteSignature y CompletePadesRemoteSignature dividen la operación para que la clave privada permanezca dentro de un servicio remoto o un módulo de hardwareValidatePades informa el nivel de línea base más alto que alcanza el documento más códigos de problema a nivel de cláusula; ValidatePadesTrust y ValidatePadesTrustAsync agregan la verificación de confianza de la cadena de certificadosSignPadesWithPdfA convierte a PDF/A-4 y firma en una sola llamada, según EN 319 142-1 Annex A.7PDFium abre archivos cifrados. No escribe cifrado. PDFium Delphi Component implementa el lado de escritura conforme a ISO 32000-2 y sus especificaciones técnicas
SaveAsEncrypted con derivación de clave V=5 / R=5 / R=6, incluida la iteración de hash del algoritmo 2.B, y las entradas de diccionario /O /U /OE /UE /Perms/Length y una tabla de referencias cruzadas reconstruida/AuthCode de ISO/TS 32004 — CMS AuthenticatedData con derivación de clave HKDF, encapsulado de clave y verificación HMACSeis familias de estándares ISO, cada una con un validador que devuelve códigos de resultado a nivel de cláusula y una ruta de guardado o inyección de marcadores correspondiente
El motor ofrece un único guardado secuencial del archivo completo. Las aplicaciones con frecuencia necesitan más que eso, así que PDFium Delphi Component escribe sus propias revisiones sobre la salida semántica del motor
SaveAsLinearized produce archivos Fast Web View con agrupación de primera página, dos secciones de referencias cruzadas y las tablas de sugerencias de desplazamiento de página y objetos compartidos del Annex FSaveAsObjectStream agrupa los objetos elegibles en /ObjStm con orden local por página y cobertura completa de referencias cruzadas de tipo 2BeginIncrementalSave y CommitIncrementalSave anexan solo los objetos indirectos nuevos y modificados a fuentes cifradas o no cifradas, preservando la salida anterior byte por byte junto con /Prev, /Encrypt, /Info y el /ID permanente; una confirmación sin cambios no hace crecer el archivoSaveAsRepaired escribe una copia de una sola revisión y la reverifica con una carga estricta independiente antes de entregarlaTPdf.PdfVersion reutiliza el estado del analizador de PDFium y solo realiza una verificación de encabezado de ocho bytes en lugar de volver a analizar el documento de origenTPdfRandomAccessStore mantiene los datos intermedios en memoria hasta SaveMemoryLimit y luego migra a un archivo temporal exclusivo que se elimina al cerrar; el posprocesamiento del guardado principal usa la misma política para los tres espacios de trabajo, mientras que las actualizaciones predeterminadas del catálogo de open-action y de etiquetas de página usan ventanas acotadas y un índice disperso/AF de ISO 32000-2 §7.11.4 adjuntos al catálogo o a una página destino, con los ocho valores de relación de la Table 45IPdfOcrProvider acepta cualquier motor de reconocimiento — el componente suministra los bitmaps de página y escribe la capa de texto buscable resultante, con estado por página y omisión de texto existenteGetStructuredText construye una jerarquía página / bloque / línea / tramo con estilo a partir de la geometría de caracteres y la semántica de Tagged PDF; ExtractTables y ExtractDocumentTables detectan tablas con bordes y alineadas por espacios en blanco, preservan tramos combinados, puntúan la confianza y emiten CSV o JSONBuildReflowDocument convierte un PDF de diseño fijo en un árbol de nodos cuya salida HTML segura preserva encabezados, párrafos, listas, figuras, secciones de página y tramos de tablaMeasureText y WrapText proporcionan ajuste de línea sin agregar nada a una páginaTPdfStreamInspector decodifica objetos de flujo arbitrarios bajo presupuestos explícitos de origen, bytes sin procesar, decodificados, razón de expansión y cantidad de flujos, devolviendo un estado estructurado en lugar de agotar la memoria con un archivo maliciosoEl corazón del sistema de procesamiento PDF, TPdf maneja todas las operaciones a nivel de documento, incluida la carga, el guardado, la extracción de texto, el procesamiento de formularios y la gestión de metadatos
Un sofisticado control visual que proporciona una experiencia rica de visualización de PDF con capacidades completas de interacción del usuario
TStream bajo demanda mediante LoadCustomDocument, con políticas compatible, estricta y de recuperación además de diagnósticos xref estructuradosSaveAsRepairedSaveAsPdfA / SaveAsPdfAToStream con perfil ICC sRGB incluido y soporte para perfiles personalizadosValidatePdfA y la propiedad de solo lectura PdfAConformanceMergeFiles (fusión por lotes de fuentes acotadas), ImportPagesByIndex (importación de subconjunto), ImportNPagesToOne (cuadrícula N-up), MovePages (reordenamiento en sitio)CreateXObjectFromPage e InsertFormObjectFromXObjectRenderPageProgressive e IPdfCancellationTokenTPdfProgressiveDocument, incluidas sugerencias de rangos de bytes dispersos, programación de rangos priorizada, reintentos acotados, cancelación y compuertas de disponibilidad de documento, formulario y páginaSaveAsLinearized, incluidas la agrupación de primera página, dos secciones de referencias cruzadas y las tablas de sugerencias de desplazamiento de página y objetos compartidos del Annex FSaveAsObjectStream, incluidos grupos ObjStm acotados, orden local por página y cobertura completa de xref de tipo 2BeginIncrementalSave y CommitIncrementalSave, incluida la preservación del prefijo cifrado, parámetros de seguridad heredados, confirmaciones sin cambios, validación estricta de reapertura, archivos laterales duraderos, reemplazo atómico, reversión y estadísticas por confirmaciónTPdfRandomAccessStore y SaveMemoryLimit, incluido el desborde seguro a archivos temporales, E/S posicional y diagnósticos de pico por guardadoFitMode elige cómo se posiciona la página en el viewport (zoom manual, tamaño real, ajustar página, ajustar ancho); se reaplica automáticamente al redimensionar o cambiar de páginaPageColor desacopla el fondo de la página PDF renderizada del Color del control circundante, ideal para visores en modo oscuroHighlightSearchText y ClearHighlightPageShadowSize / PageShadowColor) y borde de página (PageBorderColor)LinkOptions) y eventos OnAnnotationLinkClick / OnWebLinkClickAllowUserPageChange, ChangePageOnMouseScrolling, AllowUserTextSelection) para kioscos e integraciones de solo lecturaTPdfThumbnailView| Aspecto | Detalles |
|---|---|
| Motor de renderizado | Google PDFium — motor PDF estándar de la industria, probado en producción |
| Soporte PDF | Versiones PDF 1.0 a 1.7, archivos cifrados y protegidos con contraseña |
| Compatibilidad de plataformas | Aplicaciones Windows de 32 y 64 bits |
| Soporte de IDE | Delphi XE5 / C++Builder XE5 (RAD Studio XE5) hasta Delphi/C++Builder 13.1 Florence (RAD Studio 13.1), Lazarus 3.8 o superior |
| Codificación de caracteres | Soporte Unicode completo, procesamiento de texto multilingüe |
| Administración de memoria | Optimizada para documentos grandes, uso eficiente de recursos |
| Seguridad en hilos | Diseño de un solo hilo (según los requisitos de PDFium) |
PDFium Delphi Component sigue un patrón de arquitectura en capas que separa claramente las responsabilidades y maximiza la reutilización del código:
| Capa | Archivos | Responsabilidad |
|---|---|---|
| Componentes VCL | PDFium.pas, FPdfThumbnail.pas | Componentes Delphi VCL (TPdf, TPdfView, TPdfThumbnailView) con soporte en tiempo de diseño |
| Bindings de la 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 | Declaraciones de punteros a función para llamadas a la DLL de PDFium |
| Pipeline PDF/A | FPdfPdfa.pas | Creación PDF/A-1b (inyección de XMP, OutputIntent con ICC sRGB, actualización del catálogo) y validación (detección de conformidad, enumeración de problemas) |
| Infraestructura asíncrona | FPdfAsync.pas | IPdfCancellationToken / IPdfCancellationTokenSource, singleton PdfNoCancellationToken y helper TPdfFuture<T> para tareas de renderizado y exportación de larga duración |
| Helpers de geometría | FPdfMatrix.pas | Envoltura orientada a objetos sobre FS_MATRIX con helpers Translate, Scale, Rotate, Flip, Skew y Multiply |
| Operaciones de página | FPdfPageOps.pas | Wrappers de FPDF_ImportPagesByIndex, FPDF_ImportPages, FPDF_ImportNPagesToOne, FPDF_MovePages, programación por lotes escalable respaldada en archivos, además de helpers para Form XObject (CreateXObjectFromPage / InsertFormObjectFromXObject) |
| Panel lateral de miniaturas | FPdfThumbnail.pas | TPdfThumbnailView — panel desplazable de miniaturas por página con hover, selección y navegación mediante OnPageClick |
| Motor nativo | DLLs\Win32|Win64\pdfium.dll y pdfium.v8.dll | Motor nativo de renderizado Google PDFium, con compilaciones opcionales habilitadas para V8 |
TPdf y 36 proyectos listos para ejecutar reducen el tiempo de desarrolloPDFium Delphi Component está diseñado para una productividad inmediata. La biblioteca de componentes incluye:
Ya sea que esté construyendo un visor PDF simple o un sistema complejo de procesamiento de documentos, PDFium Delphi Component ofrece la base para una funcionalidad PDF profesional en sus aplicaciones Delphi y C++Builder