PDFium Delphi Component es una biblioteca de componentes completa y de calidad profesional que aporta potentes capacidades de procesamiento y visualización de PDF a las aplicaciones Delphi y C++Builder. Utiliza el motor de renderizado PDFium para el renderizado de páginas y la lectura de documentos, e implementa en Object Pascal todo aquello que el motor no proporciona.
Esa distinción importa cuando evalúa la biblioteca. PDFium dibuja páginas, extrae texto y lee estructuras existentes. No puede firmar un documento, escribir cifrado, validar una norma PDF ni emitir una revisión linealizada 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 equivalente alguno en la API de PDFium — criptografía, firmas, cifrado, conformidad con normas, serialización PDF, intercambio de datos de formularios, maquetación y conformado de texto. Todo ello se entrega como código fuente.
La biblioteca consta de tres componentes registrados: TPdf para el procesamiento y la manipulación de documentos con 475 miembros públicos, TPdfView para la presentación visual interactiva con 152, y TPdfThumbnailView para la navegación por páginas. Tanto si necesita construir un visor de PDF sencillo, 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 necesita.
Las siguientes capacidades no tienen equivalente en la API C de PDFium. Cada una está implementada por PDFium Delphi Component en Object Pascal, verificada frente a las cláusulas publicadas por ISO, ETSI, IETF o FIPS, y disponible como código fuente.
Firma completa, no simple lectura de firmas. PDFium puede informar de que existe un diccionario de firma; PDFium Delphi Component lo crea.
SignPades, SignPadesToStream y SignPadesBytes/Certs, /OCSPs y /CRLs, diccionarios VRI por firma y el marcador /Extensions /ESIC/SubFilter /ETSI.RFC3161 que cubren el fichero completo, para B-LTAICmsSigner que cualquier otro backend puede implementarPreparePadesRemoteSignature y CompletePadesRemoteSignature dividen la operación para que la clave privada pueda permanecer dentro de un servicio remoto o de un módulo de hardwareValidatePades informa del nivel baseline más alto que alcanza el documento junto con códigos de incidencia por cláusula; ValidatePadesTrust y ValidatePadesTrustAsync añaden la comprobación de confianza de la cadena de certificadosSignPadesWithPdfA convierte a PDF/A-4 y firma en una sola llamada, conforme al anexo A.7 de EN 319 142-1PDFium abre ficheros cifrados, pero no escribe cifrado. PDFium Delphi Component implementa el lado de la escritura conforme a ISO 32000-2 y sus especificaciones técnicas.
SaveAsEncrypted con derivación de claves V=5 / R=5 / R=6, incluida la iteración hash del algoritmo 2.B, y las entradas de diccionario /O /U /OE /UE /Perms/Length y una tabla de referencias cruzadas reconstruida/AuthCode independientes según ISO/TS 32004 — CMS AuthenticatedData con derivación de claves HKDF, key wrapping y verificación HMACSeis familias de normas ISO, cada una con un validador que devuelve códigos de resultado por cláusula, y su correspondiente ruta de guardado o de inyección de marcadores.
El motor ofrece un único guardado secuencial de todo el fichero. Las aplicaciones con frecuencia necesitan algo más, de modo que PDFium Delphi Component escribe sus propias revisiones sobre la salida semántica del motor.
SaveAsLinearized produce ficheros Fast Web View con agrupación de la primera página, dos secciones de referencias cruzadas y tablas de sugerencias de desplazamientos de página y de objetos compartidos del anexo FSaveAsObjectStream agrupa los objetos elegibles en /ObjStm con ordenación local por página y cobertura completa de referencias cruzadas de tipo 2BeginIncrementalSave y CommitIncrementalSave añaden solo los objetos indirectos modificados y nuevos a fuentes cifradas o sin cifrar, preservando la salida anterior byte a byte junto con /Prev, /Encrypt, /Info y el /ID permanente; una confirmación sin cambios no hace crecer el ficheroSaveAsRepaired 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 realiza solo una comprobación de cabecera de ocho bytes en lugar de reanalizar el documento de origenTPdfRandomAccessStore mantiene los datos intermedios en memoria hasta SaveMemoryLimit y después los migra a un fichero temporal exclusivo que se elimina al cerrar; el posprocesamiento del guardado principal aplica la misma política a los tres espacios de trabajo, mientras que las actualizaciones predeterminadas de la acción de apertura y del catálogo de etiquetas de página usan ventanas acotadas y un índice disperso/AF de ISO 32000-2 §7.11.4 adjuntas al catálogo o a una página de destino, con los ocho valores de relación de la tabla 45IPdfOcrProvider acepta cualquier motor de reconocimiento — el componente suministra los mapas de bits de página y escribe la capa de texto buscable resultante, con estado por página y omisión del texto existenteGetStructuredText construye una jerarquía página / bloque / línea / tramo con estilo a partir de la geometría de los caracteres y de la semántica de Tagged PDF; ExtractTables y ExtractDocumentTables detectan tablas con bordes y alineadas por espacios en blanco, preservan los tramos combinados, puntúan la confianza y emiten CSV o JSONBuildReflowDocument convierte un PDF de maquetación fija 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 por palabras sin añadir nada a la páginaTPdfStreamInspector decodifica objetos de stream arbitrarios bajo presupuestos explícitos de origen, de datos en bruto, de datos decodificados, de ratio de expansión y de número de streams, devolviendo un estado estructurado en lugar de agotar la memoria con un fichero manipuladoEl núcleo del sistema de procesamiento PDF, TPdf gestiona todas las operaciones a nivel de documento, incluidas 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 todas las capacidades 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 de perfiles personalizadosValidatePdfA y la propiedad de solo lectura PdfAConformanceMergeFiles (fusión por lotes con fuentes acotadas), ImportPagesByIndex (importación de subconjunto), ImportNPagesToOne (cuadrícula N-up), MovePages (reordenación in situ)CreateXObjectFromPage e InsertFormObjectFromXObjectRenderPageProgressive e IPdfCancellationTokenTPdfProgressiveDocument, incluidas sugerencias de rangos de bytes dispersos, planificación de rangos priorizada, reintentos acotados, cancelación y puertas de disponibilidad de documento, formulario y páginaSaveAsLinearized, incluida la agrupación de la primera página, dos secciones de referencias cruzadas y las tablas de sugerencias de desplazamientos de página y de objetos compartidos del anexo FSaveAsObjectStream, incluidos grupos ObjStm acotados, ordenación local por página y cobertura completa de xref de tipo 2BeginIncrementalSave y CommitIncrementalSave, incluida la preservación del prefijo cifrado, los parámetros de seguridad heredados, las confirmaciones sin efecto, la validación estricta de la reapertura, los ficheros laterales duraderos, el reemplazo atómico, la reversión y las estadísticas por confirmaciónTPdfRandomAccessStore y SaveMemoryLimit, incluido el volcado seguro a fichero temporal, la E/S posicionada y los diagnósticos de pico por guardadoFitMode elige cómo se ajusta la página en el viewport (zoom manual, tamaño real, ajustar a página, ajustar a anchura); 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 para visores en modo oscuroHighlightSearchText y ClearHighlightPageShadowSize / PageShadowColor) y borde de página (PageBorderColor)LinkOptions) y eventos OnAnnotationLinkClick / OnWebLinkClickAllowUserPageChange, ChangePageOnMouseScrolling, AllowUserTextSelection) para quioscos y empotraciones de solo lecturaTPdfThumbnailView| Aspecto | Detalles |
|---|---|
| Motor de renderizado | Google PDFium — motor PDF estándar del sector, probado en producción |
| Soporte de PDF | Versiones PDF 1.0 a 1.7, ficheros cifrados y protegidos con contraseña |
| Compatibilidad de plataforma | 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+ |
| Codificación de caracteres | Soporte completo de Unicode, procesamiento de texto multilingüe |
| Gestión de memoria | Optimizada para documentos grandes, uso eficiente de los recursos |
| Seguridad frente a hilos | Diseño de un solo hilo (según los requisitos de PDFium) |
PDFium Delphi Component sigue un patrón de arquitectura por capas que separa limpiamente las responsabilidades y maximiza la reutilización del código:
| Capa | Ficheros | Responsabilidad |
|---|---|---|
| Componentes VCL | PDFium.pas, FPdfThumbnail.pas | Componentes VCL de Delphi (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 funciones para las llamadas a la DLL de PDFium |
| Canalización PDF/A | FPdfPdfa.pas | Creación PDF/A-1b (inyección de XMP, OutputIntent ICC sRGB, actualización del catálogo) y validación (detección de conformidad, enumeración de incidencias) |
| Infraestructura asíncrona | FPdfAsync.pas | IPdfCancellationToken / IPdfCancellationTokenSource, singleton PdfNoCancellationToken y helper TPdfFuture<T> para trabajos largos de renderizado y exportación |
| Helpers de geometría | FPdfMatrix.pas | Wrapper orientado a objetos sobre FS_MATRIX con helpers Translate, Scale, Rotate, Flip, Skew y Multiply |
| Operaciones sobre páginas | FPdfPageOps.pas | Wrappers para FPDF_ImportPagesByIndex, FPDF_ImportPages, FPDF_ImportNPagesToOne, FPDF_MovePages, planificación por lotes escalable respaldada en fichero, además de helpers 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 OnPageClick |
| Motor nativo | DLLs\Win32|Win64\pdfium.dll y pdfium.v8.dll | Motor de renderizado nativo Google PDFium, con builds opcionales con V8 habilitado |
TPdf y 36 proyectos listos para ejecutar reducen el tiempo de desarrolloPDFium Delphi Component está diseñado para la productividad inmediata. La biblioteca de componentes incluye:
Tanto si construye un visor PDF sencillo como un sistema complejo de procesamiento de documentos, PDFium Delphi Component proporciona los cimientos para una funcionalidad PDF profesional en sus aplicaciones Delphi y C++Builder.