Componentes principales
- TPdf — componente principal de manejo de documentos PDF para abrir, navegar, extraer texto y editar documentos PDF
- TPdfView — componente visual para mostrar páginas PDF e interactuar con ellas
- TPdfReadingSession — componente de orquestación de lectura en voz alta para motores TTS del anfitrión y seguimiento de palabras de TPdfView
- TPdfThumbnailView — panel lateral desplazable de miniaturas para la navegación por páginas
- Plataformas LCL nativas - Linux Qt6 y macOS Cocoa usan PDFium nativo, bindings LP64 correctos, servicios de fuentes y ficheros de la plataforma y los layouts reales de canales de bitmap; consulte la configuración nativa para las configuraciones Free Pascal/LCL validadas y sus límites de capacidad
Operaciones con documentos
- Carga de documentos — carga ficheros PDF desde disco, streams en memoria, arrays de bytes completos, ventanas de arrays de bytes
Index/Countbasadas en cero, o adaptadores TStream bajo demanda medianteLoadCustomDocument. Las políticas compatible, estricta y de recuperación añaden diagnósticos acotados clásicos, híbridos y de xref-stream sin reemplazar el analizador semántico de PDFium- Salida reparada verificada —
SaveAsRepairedcrea una copia completa de una sola revisión y carga de forma independiente y estricta su xref y su estructura de páginas antes de devolver los bytes o de reemplazar atómicamente un fichero- Grafo de objetos con tipo —
ExportObjectGraphemite JSON con tipo y acotado para valores directos y de object-stream, mientras queSaveAsObjectGraphPatchedaplica cambios validados del diccionario de nivel superior como una revisión incremental por etapas y carga el resultado de forma estricta antes de entregarlo- Protección con contraseña — abre documentos PDF protegidos con contraseña e informa de los
UserPermissionsefectivos para la sesión autenticada- Creación de documentos — construye nuevos documentos PDF desde cero con
CreateDocument,AddPage,AddText,AddImage,AddPicture,AddJpegImageyCreatePath- Guardado de documentos — guarda documentos modificados con diversas opciones (incremental, eliminar seguridad) y versiones PDF de destino explícitas desde PDF 1.0 hasta PDF 1.7
- Salida PDF/A-1b —
SaveAsPdfA/SaveAsPdfAToStreampostprocesan el guardado base con una actualización incremental que inyecta un stream de metadatos XMP, un OutputIntent ICC sRGB y un catálogo de documento actualizado, de manera que el resultado sea conforme a PDF/A-1b. Los perfiles ICC personalizados se admiten medianteTPdfASaveOptions.IccProfileData- Validación PDF/A —
ValidatePdfAy la propiedad de solo lecturaPdfAConformanceexploran un documento abierto en busca de marcadores XMPpdfaid, OutputIntent con ICC embebido, presencia de cifrado, e informan del nivel de conformidad (pac1a,pac1b,pac2b,pac3b,pacNoneopacUnknown) junto con una lista de entradasTPdfAValidationIssueque describen cada problema encontrado- Validador de cumplimiento de versión PDF — cuando SaveAs apunta a PDF 1.0 a PDF 1.7, el escritor rechaza cualquier entrada de diccionario, filtro, subtipo de anotación, tipo de acción, fuente, espacio de color o parámetro de cifrado introducido después de la versión de destino elegida (por ejemplo, JBIG2Decode, MarkInfo, OutputIntents, AES / AES-256, anotaciones Polygon / Caret / Watermark / Redact, acciones JavaScript / Trans / SetState)
- Compresión de streams — la compresión FlateDecode automática garantiza que todos los streams del PDF se compriman de forma óptima al guardar; establezca
Compressed := Falsepara deshabilitarla en canalizaciones de depuración- Fusión por lotes escalable —
MergeFilesimporta fuentes respaldadas por fichero con rangos de páginas y contraseñas por fuente, mantiene como máximo un documento de origen abierto y expone progreso, cancelación, manejo de detención u omisión, reversión y políticas de formularios, esquemas, recursos y preferencias del visor- Importación de subconjunto de páginas —
ImportPagesByIndexcopia un array de índices explícitos basado en cero desde un documento de origen, con InsertAt = 0 para insertar antes de la página 1 o InsertAt = PageCount para añadir al final. Pase un array de índices vacío para importar todas las páginas del origen- Composición N-up —
ImportNPagesToOnedevuelve unTPdftotalmente nuevo cuyas páginas son composiciones NumX×NumY de las páginas del documento origen, dimensionadas en unidades de usuario PDF (1 unidad = 1/72 pulgada)- Reordenación de páginas —
MovePagesreordena las páginas in situ utilizando un array de índices basado en cero y un índice de destino para la primera página movida- Validación del plan de páginas —
ValidatePagePlanprevisualiza las operaciones de eliminación, movimiento, inserción, división y fusión, inventaria los efectos sobre la navegación, las etiquetas, los formularios, el árbol de estructura, las características importadas y las firmas, y rechaza los planes que dejarían destinos colgantes o modificarían contenido firmado sin autorización explícita- Generación de maquetación en dos pasadas —
GenerateLayoutmide y pagina texto ajustado, reglas, imágenes, XObjects de página, encabezados y pies antes de emitir atómicamente objetos de página nativos, mientras que los placeholders estables{page}y{pages}preservan el número de páginas medido- Maquetación paginada respaldada en disco —
GeneratePagedLayoutescribe comandos en un almacenamiento seekable seleccionado por el llamador, restaura cada página a partir de segmentos compactos no contiguos, acota los arrays de páginas retenidos con una caché LRU y añade las páginas de PDFium secuencialmente- Maquetación de tablas entre páginas —
TPdfLayoutTableresuelve una sola vez las columnas fijas, fraccionales y dimensionadas por contenido, repite las filas de encabezado contiguas, divide las filas de cuerpo elegibles, mantiene íntegros los grupos que abarcan filas y emite títulos, bordes de celda, enlaces y una jerarquía semántica continua de Table / TR / TH / TD entre páginas- Nodos de maquetación en caché — los planes de maquetación se guardan en caché por identidades completas de restricción, contenido, fuente, estilo, origen y medidor, mientras que
TPdfLayoutCachedNodeconstruye de forma perezosa las plantillas repetidas y emite cada colocación desde un único Form XObject nativo reutilizable- Maquetación Tagged PDF automática —
GenerateTaggedLayoutemite MCIDs nativos, artifacts, un árbol de estructura Document, mapeos ParentTree e IDTree, encabezados, listas, figuras con texto alternativo, encabezados de tabla y anotaciones Link con pertenencia OBJR a partir del mismo plan de maquetación medido; las restricciones de elementos mantienen juntos los bloques y los encabezados, imponen mínimos de viuda / huérfana y fuerzan saltos de página físicos- Edición de contenido marcado —
PageObjectMarks,AddPageObjectMark,SetPageObjectMarkParam,RemovePageObjectMarkParamyRemovePageObjectMarkinspeccionan y mutan listas de propiedades BDC mediante marcas nativas estables- Texto bidi y de escrituras complejas —
AddShapedTextconvierte tramos direccionales, formas contextuales, ligaduras, avances y desplazamientos en glifos CID Type 2 posicionados, mientras que los mapeos ToUnicode generados yActualTextpreservan la semántica Unicode lógica- Autoría de fuentes CID Type 2 —
AddCidType2Textincrusta datos TrueType suministrados por el llamador con mapeos explícitos de CID a GID y ToUnicode, subsetting opcional seguro, fallback controlado de la fuente completa y comprobaciones de integridad de extracción- Presupuesto de bytes de caché unificado —
TPdf.CacheBudgetBytescoordina escenas de página analizadas, miniaturas, datos de estructura, instantáneas de texto y instantáneas de objetos de página mediante un único LRU global medible, mientras queTPdfTileCachey la caché de fuentes del sistema pueden unirse a un gobernador seleccionado por el llamador- Proveedor de fuentes del sistema del anfitrión —
ConfigureSystemFontProviderdirige las peticiones nativas de fuentes ausentes a través de un proveedor de la aplicación con validación de bytes, caché LRU acotada, gobernanza compartida opcional de bytes, fallback nativo, extracción de tablas y estadísticas de ciclo de vida- Reutilización de páginas mediante Form XObject —
CreateXObjectFromPagefabrica un handleTPdfXObjectreutilizable a partir de cualquier página de otro documento;InsertFormObjectFromXObjectinserta UNA copia de la página envuelta en la página actual. Ideal para marcas de agua, superposiciones de plantilla y flujos de tipo "estampar una página sobre muchas". El objeto de página de destino puede posicionarse, escalarse y rotarse medianteFPDFPageObj_SetMatrixy los helpersTPdfMatrix- Gestión de páginas — añada, elimine y manipule páginas individuales;
AddPage(0, ...)inserta la primera página y la activa inmediatamente- Cajas de página — lea y escriba MediaBox, CropBox, BleedBox, TrimBox y ArtBox en la página actual
- Idioma del catálogo — lea y escriba el idioma del documento almacenado en la entrada /Lang del catálogo
- IDs de fichero del trailer — lea las entradas /ID permanente y cambiante del trailer como bytes binarios
- Acciones JavaScript a nivel de documento — enumere los nombres de acción y los scripts del árbol de nombres JavaScript a nivel de documento
- Árbol de estructura de PDF etiquetado — inspeccione los elementos de estructura lógica, el texto de accesibilidad, el idioma, los IDs de contenido marcado y la jerarquía de las páginas de PDF etiquetado
- Preferencias del visor — lea
PrintCopies,PrintPageRanges,PrintScalingyPrintPaperHandlingdel diccionario de preferencias del visor del documento; los PDF guardados utilizan por defecto una acción de apertura "Ajustar a alto" en la primera página
Operaciones de texto
- Extracción de texto — extrae texto de páginas PDF con precisión a nivel de carácter mediante las propiedades
Text,TextInRectangle, indexadasCharacter,CharacterRectangleyCharacterOrigin- Modelo de texto estructurado —
GetStructuredTextconstruye una jerarquía acotada de página, bloque, línea y tramo con estilo a partir de la geometría nativa de los caracteres, los metadatos de fuente, la identidad de los objetos de texto, la semántica de Tagged PDF y el orden de respaldo por maquetación física- Detección y extracción de tablas —
ExtractTablesyExtractDocumentTablescombinan cajas de palabras nativas con reglados de trayectorias transformados para detectar tablas con bordes o alineadas por espacios en blanco, preservar los tramos combinados, puntuar la confianza, marcar las continuaciones de página y emitir CSV o JSON- Reflow semántico y HTML adaptable —
BuildReflowDocumentcombina la semántica de Tagged PDF, la inferencia de maquetación física y la extracción de tablas en un árbol de nodos reutilizable y acotado cuya salida HTML segura preserva encabezados, párrafos, listas, figuras, secciones de página y tramos de tabla- Capa OCR buscable —
ApplyOcrSearchLayerpasa renderizados BGRA acotados de las páginas, de arriba abajo, a un proveedor de la aplicación, mapea los quads de confianza a través de la geometría nativa de página y añade texto buscable invisible sin recodificar las imágenes escaneadas- Unidades de lectura por frases - TPdf.ReadingUnits, TPdf.DocumentReadingUnits, TPdfView.ReadingUnits y BuildReadingUnits exponen registros TPdfReadingUnit de tamaño frase para escucha TTS sincronizada
- Selección de línea visual —
TPdfView.SelectLineAtselecciona la línea visual de texto que contiene un índice de página basado en uno y un índice de carácter basado en cero, mediante el mismo modelo de límites de línea empleado por la selección con triple clic y porShift+HomeoShift+End- Resaltado de lectura por palabra —
TPdf.PageWordBoxes,TPdfView.PageWordBoxes,BuildWordBoxes,WordBoxIndexAtCharIndex,TPdfView.SelectWordBox,TPdfView.SelectWordSpan,TPdfView.TrackReadingWordAt,TPdfView.SetReadingWord,TPdfView.ClearReadingWord,ReadingWordColor,ReadingWordFollowAsigna un desplazamiento de carácter de página al TPdfWordBox que lo contiene, lo resalta y devuelve el índice de palabra; Resalta un TPdfWordBox como palabra hablada actual en TPdfView; Borra la superposición del cursor de lectura por palabra actual en TPdfView; Controla el color de superposición usado para el cursor de lectura por palabra actual; Controla si TPdfView desplaza la palabra hablada actual a la vista mientras sigue la lectura- Orquestación de sesión de lectura en voz alta -
TPdfReadingSession,TPdfSpokenText,SpokenTextAppend,BuildSpokenTextFromWords,SpokenToPageCharyEstimateSpokenWordIndexcoordinan los motores TTS del anfitrión, los fragmentos hablados, las devoluciones de llamada de posición de palabra, la cadencia estimada, la pausa y la reanudación, y las actualizaciones del cursor de palabra de TPdfView- Búsqueda de texto — encuentre texto con opciones de búsqueda con distinción de mayúsculas, palabra completa y coincidencias consecutivas mediante
FindFirst,FindNextyFindPrevious, o recorra en stream las coincidencias hacia adelante y hacia atrás de todo el documento conTPdf.CreateDocumentSearch, rectángulos de resultado en espacio de página, cancelación cooperativa y memoria constante de handles de página- Superposición de resaltado de búsqueda —
TPdfView.HighlightSearchTextreemplaza la superposición de coincidencias de la página actual, mientras queAddSearchTextHighlightañade rangos únicos para términos adicionales, de modo que varias consultas puedan permanecer visibles a la vez.ClearHighlightelimina el conjunto completo; navegar a otra página lo borra automáticamente porque los rangos de caracteres son específicos de cada página.HighlightColortieneclYellowcomo valor por defecto y está publicada para que las aplicaciones puedan aplicar su tema a la superposición- Propiedades de los caracteres — acceda al tamaño de fuente, peso, ángulo y posicionamiento de cada carácter mediante las propiedades indexadas
CharacterAngle,CharacterFontSize,CharacterFontWeight,CharacterGenerated,CharacterIsHyphenyCharacterMapError- Soporte de caracteres europeos —
AddTextcarga automáticamente y guarda en caché la fuente TrueType del sistema correspondiente antes de crear un objeto de texto, de modo que los caracteres con tildes y diacríticos checos, franceses, alemanes, españoles, portugueses, polacos y turcos que las fuentes estándar incluidas en PDFium no pueden representar ahora se renderizan correctamente sin ningún cambio de código- Adición de texto — añada texto nuevo a páginas PDF con fuentes, colores, transparencia y rotación personalizados
- Posicionamiento de objetos de texto — establezca posiciones por carácter para objetos de texto existentes mediante
SetTextPositionsyTPdfSingleArray- Información de fuentes — recupere propiedades de fuente, incluido el nombre de familia, el estado de incrustación, el ángulo de cursiva, el ascendente / descendente y los datos de fuente en bruto, por cada objeto de página
Soporte de anotaciones
- Tipos de anotación — soporte para texto, enlace, resaltado, subrayado, tachado y muchos otros tipos de anotación
- Creación de anotaciones — cree nuevas anotaciones de forma programática
- Edición de anotaciones — modifique las propiedades de anotaciones existentes, incluidos color, transparencia y contenido
- Anotaciones de enlace — gestione enlaces internos y externos con soporte de acciones
Soporte de formularios
- Accesores para rellenado de formularios por voz - FocusedFormFieldValue, FocusedFormFieldName y FocusedFormFieldDetails en TPdf y TPdfView exponen el valor, el nombre y TPdfFormFieldInfo del campo lógico actual para rellenado de formularios con teclado o voz
- Tipos de formulario — soporte para formularios AcroForm y XFA
- Rellenado de formularios — rellenado interactivo de formularios con soporte de JavaScript
- Selección de DLL V8 — establezca
EnableV8Engineantes de la carga para utilizarpdfium.v8.dllde la carpetaDLLs\Win32oDLLs\Win64correspondiente, y consulte la disponibilidad de helpers V8/XFA medianteV8FeaturesAvailable,XfaBStrHelpersAvailableyGetRecommendedV8Flags- Acceso a campos — lea y escriba los valores de los campos de formulario por índice o por posición
- Información de campos — acceda al tipo, indicadores, nombre y otras propiedades de los campos
- Indicadores de campo — actualice los indicadores de los campos AcroForm por índice o por posición mediante
SetFormFieldFlags/SetFormFieldFlagsAt, incluidos los indicadores de solo lectura, obligatorio, contraseña y selección múltiple- Aplanado de formularios —
GenerateFormAppearancesregenera el stream de apariencia /AP para cada widget de formulario en cada página, yFlattenPage/FlattenAllPagesincorporan las anotaciones y los campos de formulario al contenido estático de la página (no editable)- Selección de texto del widget de formulario, portapapeles y deshacer / rehacer — en el widget AcroForm con foco, el visor expone
GetSelectedFormText,CopySelectedFormTextToClipboard,CutSelectedFormTextToClipboard,PasteFormTextFromClipboard,SelectAllFormTextyFormUndo/FormRedo/FormCanUndo/FormCanRedo. El editor gestionaCtrl+A,Ctrl+C,Ctrl+Insert,Ctrl+X,Shift+Delete,Ctrl+VyShift+Insert; cortar y pegar rechazan los campos de solo lectura o las sesiones sin permiso de rellenado de formularios o de modificación- Transacciones de edición de documentos y deshacer / rehacer —
BeginEditTransaction,CommitEditTransactionyRollbackEditTransactionagrupan ediciones arbitrarias de páginas, objetos, anotaciones, adjuntos y metadatos, mientras queUndoEdit,RedoEdity los diarios de edición portátiles emplean deltas bidireccionales acotados verificados con SHA-256- Recuperación ante fallos y autoguardado por confirmación — los paquetes de recuperación con suma de comprobación vinculan las huellas de origen y de recuperación a un diario de edición acotado, mientras que el autoguardado atómico actualiza un sidecar explícito tras cada confirmación, deshacer o rehacer sin reescribir el PDF de origen
Operaciones de imagen
- Extracción de imágenes — extrae bitmaps de páginas PDF con la propiedad indexada
Bitmap; itere sobreBitmapCountpara guardar cada imagen en disco- Inserción JPEG —
AddJpegImagetoma un TStream de bytes JPEG en bruto e incrusta la imagen como un XObject /DCTDecode sin recodificarla- Soporte de Picture —
AddPictureacepta un objetoTPicturecon conversión automática de formato mediante las clases gráficas VCL/LCL registradas- Inserción directa de imágenes —
AddImage(FileName)reconoce cualquier formato registrado en las unidades gráficas VCL o LCL (BMP, PNG mediante PngImage, JPG, ...) y comparte la canalización con AddPicture.AddImage(TBitmap)omite el intermediario TPicture, lo que simplifica los llamadores que ya disponen de un TBitmap procedente de renderizado o de un trabajo de generación por lotes- Perfil ICC de imagen — los objetos de imagen de página exponen sus datos de perfil ICC incrustado cuando están presentes (binding para
FPDFImageObj_GetIccProfileDataDecoded)- Generación de miniaturas — genere bitmaps de miniatura de la página actual mediante la propiedad
Thumbnailo renderice cualquier página basada en uno medianteTPdf.RenderPageThumbnailsin cambiarPageNumber, con una LRU consciente de revisiones acotada por topes de entradas y de bytes de píxel- Caché de escenas de página analizadas —
TPdf.RenderPageByIndex,RenderPageThumbnailyExtractThumbnailreutilizan escenas de página de PDFium en caché LRU acotada, mientras que las ediciones de páginas, los cambios en el árbol de páginas, el estado de los formularios y el desmontaje del documento invalidan las entradas obsoletas
Unidades de utilidad
- Infraestructura asíncrona —
FPdfAsynccombina cancelación cooperativa estructurada con callbacks removibles y fuentes de fecha límite, despacho configurable de resultadosTPdfFuture<T>y unTPdfAsyncExecutorreutilizable con trabajadores fijos, cuatro lanes FIFO de prioridad, contrapresión de colas acotadas, handles por tarea, diagnósticos de tiempos, estadísticas agregadas y apagado ordenado- Adaptador de stream —
TPdfStreamAdapterconecta unTStreamPascal con los callbacksFPDF_FILEACCESSde PDFium, de modo queLoadCustomDocumentlea bloques bajo demanda en lugar de bufferizar todo el PDF en memoria- Sesiones de descarga progresiva —
TPdfProgressiveDocumentmantiene vivo el proveedor nativo de disponibilidad de PDFium, alimenta con los hints de documento, formulario y página elTPdfRangeRequestScheduler, fusiona los rangos ausentes, anticipa las transferencias en segundo plano para los bytes críticos de la página, acota los tamaños de petición y los reintentos, cancela los transportes redundantes y abre una página linealizada antes de que llegue el PDF completo- Inspección acotada de streams —
TPdfStreamInspectorinventaria los objetos de stream físicos, expone ventanas seguras en bruto y decodificación ordenada de filtros generales, informa de las rutas de acceso nativas de imágenes y adjuntos, y aplica presupuestos de origen, salida, diccionario, recuento y ratio de expansión- Normalización de streams de contenido —
TPdf.SaveAsNormalizedContenttokeniza el contenido lógico de las páginas, elimina comentarios, valida el estado y el equilibrio de contenedores, preserva los operadores no soportados y los datos de imágenes en línea, y fusiona arrays/Contentsseguros- Salida Fast Web View —
TPdf.SaveAsLinearizedescribe los objetos de la primera página por delante de las páginas posteriores, emite dos secciones de referencias cruzadas y construye las tablas de sugerencias de desplazamientos de página y de objetos compartidos, de modo que un cliente HTTP Range pueda abrir la página solicitada sin descargar el fichero completo- Salida object-stream —
TPdf.SaveAsObjectStreamempaqueta los valores elegibles en grupos ObjStm acotados de PDF 1.5+, mantiene directos los objetos críticos para la apertura y escribe entradas xref de tipo 2 adaptativas para lograr ficheros más pequeños sin sacrificar el acceso aleatorio- Guardado incremental de objetos sucios —
TPdf.BeginIncrementalSaveyCommitIncrementalSavecomparan instantáneas semánticas estables, preservan cada byte previo cifrado o sin cifrar, heredan los parámetros de seguridad R5, R6 o R7, añaden solo los objetos modificados, reabren de forma estricta cada resultado y emplean un fichero lateral duradero más reemplazo atómico para las confirmaciones a fichero- Control de contenido opcional —
TPdf.InspectOptionalContentinventaria capas, configuraciones, metadatos de uso, grupos de opción, orden, bloqueos, políticas OCMD y expresiones de visibilidad, mientras queSaveAsOptionalContentConfiguredescribe estados de capa deterministas que PDFium aplica a través de su contexto nativo de renderizado- Almacenamiento de trabajo acotado —
TPdfRandomAccessStoremantiene los datos pequeños en memoria, se vuelca una sola vez a un fichero temporal privado que se elimina al cerrar al alcanzar un tope seleccionado por el llamador, y suministra lecturas posicionadas sin cambiar el cursor compartido;TPdf.SaveMemoryLimitaplica la misma política al posprocesamiento del guardado principal, mientras que las actualizaciones predeterminadas de la acción de apertura y del catálogo de etiquetas de página usan ventanas de tamaño fijo y un índice disperso de objetos perezoso- Consulta nativa de versión —
TPdf.PdfVersionreutiliza el estado del analizador deFPDF_GetFileVersionpara la semántica de cabecera y catálogo, con una única guarda de cabecera de ocho bytes para rechazar degradaciones de catálogo malformadas- Kit de herramientas de geometría de matrices —
FPdfMatrixenvuelveFS_MATRIXde PDFium con composición posterior y previa, transformaciones conscientes del pivote, ajuste de rectángulos stretch / contain / cover, diagnósticos de invertibilidad según escala, descomposición, helpers de inverso sin mutación, mapeo de vectores y cuadriláteros, lotes de puntos o rectángulos de una sola asignación, variantes in situ y límites transformados en una pasada- Renderizado progresivo cancelable —
TPdf.RenderPageProgressivecontrola el bucleFPDF_RenderPageBitmap_Start+RenderPage_Continuede PDFium y consulta unIPdfCancellationTokenentre iteraciones a través del callbackIFSDK_PAUSE, de modo que los renderizados largos a alta DPI pueden cancelarse a mitad de página en lugar de bloquearse hasta su finalización. Devuelve unTPdfProgressiveStatusdeprsDone,prsCancelledoprsFailed- Ruta de renderizado zero-copy —
RenderPage/RenderTile/RenderPageProgressiveescriben la salida de PDFium directamente en el búfer DIB delTBitmapde destino en lugar de pasar por un búfer interno, ahorrando una copia de memoria de anchura × altura × 4 bytes por renderizado — más perceptible a alta DPI (paneles de miniaturas, exportación con calidad de impresión, exportación por lotes). Se conserva una ruta alternativa por línea de escaneo cuando no se puede envolver el DIB de destino de forma segura- Transformaciones de bitmap para baja visión - InvertPdfBitmap, GrayscalePdfBitmap y DuotonePdfBitmap transforman in situ píxeles TBitmap de 32 bits para vistas invertidas, grises o bicolor de baja visión
- Visualización en vivo para baja visión —
TPdfView.OptionsadmitereInvertyreNightDuotone, conNightDuotoneInkyNightDuotonePapercontrolando la paleta nocturna en vivo antes de pintar las superposiciones
Operaciones de dibujo
- Dibujo de trayectorias — cree trayectorias con líneas, curvas Bézier y formas cerradas
- Eliminación de objetos — elimine objetos de página y regenere el contenido de la página desde TPdf o TPdfView
- Relleno y trazo — configure el modo de relleno, los colores, la transparencia y las propiedades de trazo
- Modos de mezcla — soporte para diversos modos de mezcla PDF
- Estilos de línea — configure el estilo de extremo de línea, la unión de líneas y el grosor de trazo
Firmas digitales
- Detección de firmas — detecta y enumera firmas digitales en documentos PDF
- Información de firma — accede a los contenidos de la firma, al rango de bytes, al subfiltro, al motivo y a la fecha
- Permisos MDP — consulta los permisos de detección y prevención de modificaciones del documento
- Análisis de revisiones posteriores a la firma —
AnalyzeSignatureRevisionsclasifica los cambios incrementales sobre los bytes originales frente a DocMDP y FieldMDP, identifica las actualizaciones de material de validación e informa de definiciones sombra u objetos comprimidos sin resolver sin volver a guardar el documento- Perfiles de curva elíptica PDF 2.0 — la validación PAdES identifica firmas NIST, Brainpool, Ed25519 y Ed448, comprueba la congruencia entre curva y resumen y los parámetros de AlgorithmIdentifier, e informa por separado de la criptografía nativa no soportada y de las combinaciones inválidas
Soporte de archivos adjuntos
- Acceso a archivos adjuntos — lea, cree, modifique y elimine ficheros adjuntos incrustados
- Extracción por lotes acotada —
ReadAttachmentMetadatainventaria los adjuntos una sola vez yExtractAttachmentsToStreamsescribe una carga decodificada cada vez bajo controles por fichero, agregados, por fragmentos y de cancelación- Nombres de archivos adjuntos — acceda a los nombres de fichero de los archivos adjuntos
- Tipos de archivos adjuntos — lea los valores de subtipo MIME del fichero incrustado cuando están presentes
- Marcadores — navegue por los marcadores del documento con soporte jerárquico mediante el array
Bookmarks,BookmarkChildren,HasBookmarkChildreny los helpers de recorridoBookmarkFrom- Destinos con nombre — acceda a los destinos con nombre por índice o por nombre mediante
Destination,DestinationByNameyDestinationCount- Etiquetas de página — recupere las etiquetas de página de cada página mediante
PageLabel; útil cuando los documentos utilizan numerales romanos para las primeras páginas- Enlaces web — detecte y navegue por enlaces web en las páginas con
WebLink,WebLinkCountyTPdfView.WebLinkAtPos- Anotaciones de enlace — acceda a las anotaciones de enlace con información de acción y destino mediante
LinkAnnotation,LinkAnnotationCountyTPdfView.LinkAnnotationAtPos- Manejo seguro de clics en enlaces — TPdfView dispara los eventos
OnAnnotationLinkClick/OnWebLinkClickantes del manejo automático de goto / URI, con las acciones de lanzamiento deshabilitadas por defecto. La detección de clic en enlace se ejecuta solo cuando el gesto es un clic en lugar de un arrastre, utilizando un ancla MouseDown nueva para que los gestos de paneo sigan fluyendo a través de la ruta de scroll existente sin cambios
Renderizado
- Renderizado de alta calidad — renderiza páginas a contexto de dispositivo, bitmap o tile mediante
RenderPage/RenderTile, con escrituras directas zero-copy en el búfer DIB de destino- Renderizado progresivo cancelable —
RenderPageProgressivecontrola el bucle progresivo de PDFium y consulta unIPdfCancellationTokenentre iteraciones, devolviendoprsDone,prsCancelledoprsFailed. El bitmap conserva el trabajo parcial realizado hasta ese momento cuando se cancela- Renderizado paralelo de páginas —
RenderPagesParallelcaptura el documento actual una sola vez, da a cada trabajador un módulo y un documento de PDFium cargados de forma independiente, preserva el orden de las peticiones y acota la memoria de salida retenida por página y agregada- Redacción segura de contenido —
SaveAsRedactedaplica rectángulos/Redactsobre una instantánea aislada, elimina de forma conservadora los objetos de página de nivel superior que intersecan y las anotaciones solapadas, pinta reemplazos opacos, elimina los adjuntos incrustados y escribe un resultado saneado de una sola revisión sin cambiar el documento cargado- Opciones de renderizado — optimización de texto LCD (
reLcd), anotaciones (reAnnotations), escala de grises e indicadores de modo de impresión- Hooks de Skia — los bindings de bajo nivel
FPDF_RenderPageSkiayFPDF_FFLDrawSkiaestán disponibles cuando los llamadores proporcionan un SkCanvas externo (depende de las exportaciones de la DLL incluida)- Selección de modo de impresión — establezca los modos de impresión PDFium EMF, solo texto, PostScript, pass-through, image-mask y Type 42 mediante
SetPdfPrintModeconTPdfPrintMode- Superposición asíncrona — TPdfView puede mostrar una superposición opcional de carga mientras los trabajadores propiedad de la aplicación renderizan con instancias TPdf independientes
- Rotación de página — soporte para rotación de 0, 90, 180 y 270 grados (
ro0,ro90,ro180,ro270)- Detección de transparencia — la propiedad
Transparentinforma si algún objeto de la página actual tiene transparencia, incluidos los modos de mezcla y el alfa parcial
Visualización (TPdfView)
- Modos de visualización —
dmSingleContinuous,dmTwoPageContinuousydmTwoPageContinuousWithCover(la página de portada queda sola y luego continúa con dobles páginas). El helper a nivel de unidadComputeSpreadPagesexpone los cálculos de páginas dobles sin instanciar un visor- Modo de ajuste —
FitModeelige cómo se sitúa la página en el viewport:pfmNone(zoom manual),pfmActualSize(100%),pfmFitPage(toda la página cabe en el viewport),pfmFitWidth(el ancho de la página coincide con el del viewport) ypfmFitHeight(el alto de la página coincide con el del viewport). El modo de ajuste activo se reaplica automáticamente al redimensionar y cuando cambia la página actual; establecer Zoom directamente cancela el modo de ajuste activo (FitMode vuelve apfmNone), igual que la convención estándar de los visores PDF- Control de zoom — zoom variable con los helpers por página
PageZoom,PageWidthZoom,PageHeightZoomyActualSizeZoom- Color de página —
PageColordesacopla el fondo de la página PDF renderizada delColordel control circundante. Su valor por defecto esclWhite, de modo que las páginas PDF se renderizan ahora como papel blanco independientemente del tema de la aplicación anfitriona. Los visores en modo oscuro pueden mantener el área de desplazamiento oscura mientras la página PDF real permanece blanca (o de cualquier color que elija la aplicación)- Selección interactiva de texto — selección de texto del usuario final por arrastre en páginas PDF, con conmutación automática por hit-test entre selección y paneo: hacer clic sobre un carácter inicia un arrastre de selección, hacer clic sobre un espacio en blanco hace paneo. Doble clic selecciona la palabra, triple clic selecciona la línea,
Ctrl+Aselecciona la página (ambas páginas en modo de doble página),Ctrl+Ccopia comoCF_UNICODETEXT,Shift+arrowsextiende la selección, al pasar el cursor sobre texto este cambia acrIBeamy al arrastrar hacia un borde del visor la página se desplaza automáticamente. Se publicanSelectionColoryOnSelectionChange; nuevas propiedades públicasHasSelection,SelectedText,SelectionCharCount,ClearSelection,SelectAll,CopySelectionToClipboard. Los modos de visualización de doble página seleccionan en ambas páginas visibles con CR/LF como unión. Se adjunta automáticamente un menú emergente de copia con el botón derecho por defecto cuando el anfitrión no ha asignado su propioPopupMenu. Se controla con el indicadorAllowUserTextSelectionde la v1.17.0 para anfitriones de quiosco- Mapeo de coordenadas — convierta entre coordenadas de dispositivo del visor y coordenadas de página PDF con
DeviceToPage/PageToDevice, incluidas las sobrecargas que toman unTRecty devuelven unTPdfRectangle- Selección de texto y hit testing — resuelva los caracteres situados bajo los puntos del visor con
CharacterIndexAtPosy pinte resaltados de selección de texto mediantePaintSelection- Ratón y teclado — soporte completo de dispositivos de entrada con desplazamiento mediante arrastre del ratón, atajos PgUp / PgDn / Ctrl+Inicio / Ctrl+Fin y navegación por páginas con rueda hacia arriba / rueda hacia abajo. Ctrl+rueda está reservado para el zoom de la aplicación y lo omite el manejador de navegación
- Bloqueo de entrada del usuario —
AllowUserPageChangecontrola los atajos de teclado para cambio de página,ChangePageOnMouseScrollingcontrola los saltos de página con la rueda yAllowUserTextSelectioncontrola la entrada de selección de texto con ratón / teclado. Los tres tienen True como valor por defecto; cámbielos a False para bloquear quioscos, paneles de previsualización o empotraciones de solo lectura sin necesidad de subclasear- Superposición de renderizado asíncrono —
AsyncRendering,LoadingTextyLoadingColordibujan un pequeño indicador "Loading..." sobre la página renderizada, de modo que las aplicaciones que utilizan su propio trabajador para renderizados largos comparten una indicación visual coherente. Los valores por defecto preservan el comportamiento existente.TPdfahora serializa las llamadas de renderizado y de descarga de página por instancia; las aplicaciones siguen siendo responsables del despacho de trabajadores y deben evitar mutar un documento mientras hay un renderizado en curso- Manejo seguro de clics en enlaces —
LinkOptionses un conjunto publicado que controla el comportamiento automático para los cuatro tipos de acción de enlace PDF:loAutoGoto(salto de página),loAutoOpenURI(ShellExecute),loAutoLaunch(ShellExecute) yloAutoEmbeddedGoto(reservado). Los valores por defecto habilitan únicamenteloAutoGotoyloAutoOpenURI;loAutoLaunchyloAutoEmbeddedGotopermanecen desactivados para que un clic accidental no pueda ejecutar un programa arbitrario.OnAnnotationLinkClickyOnWebLinkClickse disparan antes de cualquier acción automática y permiten a la aplicación marcar el evento como manejado o redirigirlo- Interacción con formularios — edición interactiva de formularios dentro del visor, además de los helpers de selección / deshacer / rehacer de la v1.23.0
- Estilizado visual —
PageShadowSize,PageShadowColoryPageBorderColorpintan una sombra paralela opcional bajo el rectángulo de la página y un borde de un píxel a su alrededor;SmoothScrollahora anima los comandos de scroll por línea o por página en segmentos controlados por temporizador, mientras que el seguimiento del pulgar permanece inmediato- Navegación por miniaturas —
TPdfThumbnailView(unidadFPdfThumbnail) renderiza una miniatura de página por fila en un panel lateral desplazable con resaltado por hover y selección, además de navegación por clic. Diseñado para situarse junto a un TPdfView. Propiedades:CurrentPageIndex,ThumbnailWidth,ThumbnailHeight,TextColor,HoverColor,SelectionColor,BorderColor; evento:OnPageClick
Compresión
- Compresión automática — cuando la propiedad
Compressedes True (valor por defecto), se garantiza que todos los streams del PDF estén comprimidos con FlateDecode al guardar- Postprocesado — el motor de compresión explora los datos PDF guardados y comprime cualquier stream sin comprimir utilizando compresión máxima de zlib
- Reconstrucción de la referencia cruzada — reconstruye automáticamente la tabla xref cuando la compresión de streams cambia los desplazamientos de bytes
- Sin sobrecarga — si todos los streams ya están comprimidos, los datos pasan a través sin modificación
Seguridad
- Soporte de contraseña — abra documentos PDF protegidos con contraseña
- Permisos — lea los permisos del documento y del usuario; el demo
SecurityAuditcombina permisos, archivos adjuntos, JavaScript del documento, enlaces URI / Launch, firmas, XFA y disponibilidad de V8 en una superficie de riesgo de solo lectura con acciones de guardado de informe TXT / JSON y de copia TXT- Kit DER acotado —
FPdfAsn1codifica números de tag bajos y altos, valores con tipo, colecciones SET OF ordenadas y formas canónicas de tiempo o de cadena; sus lectores de ventanas zero-copy, decodificadores con tipo y validador con recursos limitados soportan flujos de trabajo de CMS, PAdES, certificados y sellos de tiempo- Validación a largo plazo específica de firma —
TPadesDssOptions.Vrisescribe diccionarios VRI indirectos indexados por hash mientras que los streams compartidos de certificados, OCSP y CRL se deduplican por hash de contenido, y la firma PAdES B-LT o B-LTA crea automáticamente el VRI de la nueva firma- Firma remota e interrumpida —
PreparePadesRemoteSignaturepersiste el resumen SHA-256 del documento, el ByteRange exacto, las coordenadas del placeholder y la huella del PDF preparado para la firma HSM o en la nube, mientras queCompletePadesRemoteSignaturerechaza las sesiones modificadas, reutilizadas, sobredimensionadas o con resumen no coincidente antes de escribir la salida- Análisis de la política de revisiones de firma —
AnalyzeSignatureRevisionsreconstruye cadenas de revisiones clásicas, híbridas y de xref-stream, aplica DocMDP y FieldMDP por firma y falla de forma cerrada ante cambios malformados, sombra, comprimidos o fuera de presupuesto- Perfiles de firma sin ambigüedad — la validación PAdES cuenta las claves requeridas solo en el nivel superior del diccionario de firma, rechaza duplicados y perfiles Sig o DocTimeStamp inconsistentes, y exige que ByteRange excluya exactamente el token hexadecimal directo de Contents
- Exportación de evidencia multifirma —
BuildPadesEvidenceReportcorrelaciona hechos de PDFium, política CMS, estado de confianza y de sellos de tiempo, hashes de la ruta de certificados, cobertura DSS/VRI y decisiones de revisión con salida JSON y CSV acotadas- Renovación del sello de tiempo de archivo —
RenewPadesArchiveTimestampañade un Document Time-stamp RFC 3161 sobre la historia de firmas existente exacta, refresca opcionalmente primero el DSS completo y valida la cadena B-LTA resultante antes de la salida- Validación de confianza asíncrona —
ValidatePadesTrustyValidatePadesTrustAsyncverifican firmas detached sobre los bytes originales, las cadenas del firmante y de la TSA, la evidencia opcional de revocación en línea y los tokens de sello de tiempo RFC 3161 con progreso por etapas, recuperación acotada y cancelación cooperativa- Confianza cualificada —
TPdfEuropeanTrustedListanaliza únicamente listas de confianza ETSI autenticadas por el llamador, reautentica el XML en caché, acepta fuentes de actualización propiedad del llamador y suministra evaluación cualificada de servicios sin conexión a través deQualifiedTrustEvaluator- Eliminación de seguridad — guarde documentos con la seguridad eliminada (cuando esté autorizado)
Impresión
- Modos de impresión — elija entre los modos de impresión EMF, solo texto, PostScript Nivel 2 / 3, PostScript pass-through, EMF image-mask y Type 42 mediante la función global
SetPdfPrintMode- Preferencias del visor — exponga la intención del autor del documento mediante
PrintCopies,PrintPageRanges(rangos de páginas basados en uno),PrintScalingyPrintPaperHandling;SetPdfPrintPaperHandlingDevModemapea la sugerencia de dúplex en elDEVMODE.dmDuplexde Windows- Impresión N-up — los demos de Delphi, C++Builder y Lazarus
PrintPreferencesmuestran la composición de hojas N-up (1 / 2 / 4 / 9 páginas por hoja) con filtrado de páginas impares / pares, renderizado en escala de grises, bordes de celda opcionales de 1 píxel, preferencias de impresión del autor del PDF y mapeo de intención de dúplex medianteSetPdfPrintPaperHandlingDevMode
Demos incluidos
Los árboles
Demo\Delphi,Demo\CBuilderyDemo\Lazarusincluyen proyectos de ejemplo ejecutables que ejercitan la superficie de API real en las tres familias de IDE. Aspectos destacados:
- PDFViewer / MultiPageViewer / SplitView — uso integral de TPdfView: carga, navegación, zoom, rotación, doble página, diseños con portada y comparación de PDF lado a lado en Delphi / C++Builder / Lazarus con comandos sincronizados; los demos de visor también son pruebas de velocidad prácticas con PDF de varios gigabytes, en los que documentos de 2.x GB pueden alcanzar una primera vista usable casi instantáneamente mientras el renderizado de páginas se mantiene reactivo
- ViewerInteractionLab — muestras enfocadas en Delphi, C++Builder y Lazarus de la interacción de TPdfView para modos de visualización, modos de ajuste, colores de página, rotación, resaltado de búsqueda, selección de texto, previsualización de texto seleccionado, acciones de portapapeles y feedback de coordenadas DeviceToPage
- SearchAndSelect — muestras de flujo enfocadas en Delphi, Lazarus y C++Builder para listado de resultados de búsqueda en todas las páginas, navegación al resultado anterior / siguiente, salto a resultado mediante doble clic,
HighlightSearchText, búsqueda con distinción de mayúsculas / palabra completa,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelectiony modos de visualización de doble página- PreflightReport — objetos reutilizables
FPdfPreflightReportque recopilan resultados PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R y PDF/VT con estado, severidad Info / Warning / Error, búsqueda por nombre, filtrado, agregación determinista, huellas SHA-256 estables, salida TXT / HTML / Markdown / JSON / CSV y formatos de automatización SARIF 2.1.0 / JUnit XML / NDJSON / XML; los demos de Delphi, Lazarus y C++Builder más los flujos de consola proporcionan previsualizaciones, enrutamiento por lotes, resúmenes, adjuntos de informe y puertas de código de salida para CI- ContentExtractionLab — flujo unificado de inventario de contenido en Delphi, Lazarus y C++Builder para metadatos de documento, texto de página, objetos de página, imágenes, archivos adjuntos, enlaces, anotaciones, marcadores y métricas de fuente / carácter con exportación TXT / JSON, selección de categorías todas / ninguna, guardado del PDF de origen y acciones de copia de informe
- WatermarkStamp — flujo reutilizable Form XObject en Delphi, Lazarus y C++Builder para marcas de agua centradas, sellos en esquina y etiquetas de número de página sobre un PDF de destino de varias páginas
- CreatePDF — construya un PDF de varias páginas desde cero con texto, imágenes, trayectorias, tablas y composición de marcas de agua; incluye una opción de «Texto Europeo» para escribir texto acentuado checo / francés / alemán / español / portugués / polaco / turco y verificar la selección de fuentes y el tratamiento Unicode
- ExtractText / ExtractImages / ContentExtractionLab — guarde el texto extraído (incluida la salida separada por página) o las imágenes incrustadas en disco, o genere un informe de inventario de contenido multicategoría en una sola pasada
- FormFill — lea los metadatos de los campos AcroForm, escriba valores, regenere las apariencias /AP y guarde el resultado tanto en versión editable como aplanada
- FontProperties — inspeccione los metadatos indexados de carácter / fuente tanto a través de TPdf como de TPdfView en Delphi, C++Builder y Lazarus
- MergePDF / SplitPDF — combine varios PDF origen (con selección de rango de páginas por archivo, ruta de salida opcional, registro de ejecución, botón de cancelación y resumen de finalización de la combinación) o divida un PDF en ficheros de salida por página
- PDFtoJpg / BatchExport — conversión PDF a JPG única o por lotes en varios ficheros para Delphi, C++Builder y Lazarus, con progreso global por fichero, progreso actual por página, entradas de DPI / calidad / contraseña y un lote cancelable de forma cooperativa respaldado por
IPdfCancellationToken- StandardsLab — muestras de flujo en Delphi, C++Builder y Lazarus para validación, informe de incidencias y salidas de guardado orientadas a estándares PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R y PDF/VT
- PrintPDF / PrintPreferences — impresión estándar de PDF en Delphi, C++Builder y Lazarus con previsualización, rangos de páginas, copias, intercalado, progreso y cancelación (PrintPDF), además de composición de hojas N-up en Delphi, C++Builder y Lazarus con filtrado par / impar y preferencias de impresión del autor del PDF (PrintPreferences)
- SecurityAudit — muestras de superficie de riesgo de solo lectura en Delphi, C++Builder y Lazarus para permisos, archivos adjuntos, acciones JavaScript, enlaces URI / Launch, enlaces web, firmas, estado XFA, disponibilidad de helpers V8 / XFA, e informes de auditoría TXT / JSON
- Attachment — cree PDF, añada / liste / extraiga / elimine / guarde archivos adjuntos incrustados con visualización del subtipo MIME
- ImageToPDF — conversión por lotes de imágenes en un solo PDF, una imagen por página, en Delphi, C++Builder y Lazarus, con previsualización y progreso por imagen
Las suites de regresión de Delphi, C++Builder y Lazarus cubren 147 (Pas) / 123 (C++) casos compartiendo los mismos PDF de fixture para que el comportamiento se mantenga alineado byte a byte en las tres familias de IDE
Soporte de plataforma
- Delphi — Delphi XE5 (RAD Studio XE5) hasta Delphi 13.1 Florence (RAD Studio 13.1)
- C++Builder — C++Builder XE5 (RAD Studio XE5) hasta C++Builder 13.1 Florence
- Lazarus — soporte de Free Pascal / Lazarus
- Win32 / Win64 — plataformas Windows de 32 y 64 bits
La comparación alineada identifica páginas insertadas, eliminadas y movidas con cambios de texto Unicode acotados y varias regiones visuales; las superposiciones permiten exportar esos cambios
La combinación transaccional de navegación conserva la jerarquía de marcadores, estilos, acciones URI y destinos de página reasignados al importar páginas seleccionadas y reordenadas
El OCR Tesseract opcional añade texto buscable a páginas escaneadas con diagnósticos explícitos de dependencias, cancelación y presupuestos de recursos
La combinación transaccional AcroForm de páginas seleccionadas admite políticas explícitas de nombres y aislamiento de recursos; el proveedor opcional de códigos de barras genera Code128, QR, DataMatrix y PDF417 y reconoce imágenes en escala de grises