Componentes principales
- TPdf — componente principal para el manejo de documentos PDF, para abrir, navegar, extraer texto y editar documentos PDF
- TPdfView — componente visual para mostrar e interactuar con las páginas PDF
- TPdfReadingSession — componente de orquestación de lectura en voz alta para motores TTS del host y seguimiento de palabras en TPdfView
- TPdfThumbnailView — panel lateral desplazable de miniaturas para la navegación entre páginas
- Plataformas LCL nativas - Linux Qt6 y macOS Cocoa usan PDFium nativo, bindings LP64 correctos, servicios de fuentes y archivos de la plataforma y la disposición real de canales del bitmap; consulte la instalación nativa para las configuraciones validadas de Free Pascal/LCL y los límites de capacidades
Operaciones con documentos
- Carga de documentos — cargue archivos PDF desde disco, streams de memoria, arreglos de bytes completos, ventanas de arreglos de bytes
Index/Countbase cero, o adaptadores TStream bajo demanda medianteLoadCustomDocument. Las políticas compatible, estricta y de recuperación agregan diagnósticos acotados clásicos, híbridos y de flujos xref sin reemplazar el analizador semántico de PDFium- Salida reparada verificada -
SaveAsRepairedcrea una copia completa de una sola revisión y verifica de forma independiente con una carga estricta su xref y su estructura de páginas antes de devolver los bytes o reemplazar atómicamente un archivo- Grafo de objetos tipado -
ExportObjectGraphemite JSON tipado y acotado para valores directos y de flujos de objeto, mientras queSaveAsObjectGraphPatchedaplica cambios validados de diccionarios de nivel superior como una revisión incremental por etapas y verifica el resultado con una carga estricta antes de entregarlo- Protección con contraseña — abra documentos PDF protegidos con contraseña e informe los
UserPermissionsefectivos para la sesión autenticada- Creación de documentos — construya nuevos documentos PDF desde cero con
CreateDocument,AddPage,AddText,AddImage,AddPicture,AddJpegImageyCreatePath- Guardado de documentos — guarde documentos modificados con diversas opciones (incremental, eliminar seguridad) y versiones de destino PDF 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 modo que el resultado sea conforme a PDF/A-1b. Se admiten perfiles ICC personalizados medianteTPdfASaveOptions.IccProfileData- Validación PDF/A —
ValidatePdfAy la propiedad de solo lecturaPdfAConformanceescanean un documento abierto en busca de marcadores XMPpdfaid, OutputIntent con ICC incrustado, presencia de cifrado, e informan el nivel de conformidad (pac1a,pac1b,pac2b,pac3b,pacNoneopacUnknown) más una lista de entradasTPdfAValidationIssueque describen cada problema detectado- Validador de conformidad 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 PDF se compriman de manera óptima al guardar; establezca
Compressed := Falsepara omitirla en pipelines de depuración- Fusión por lotes escalable -
MergeFilesimporta fuentes respaldadas por archivos con rangos de páginas y contraseñas por fuente, mantiene abierto como máximo un documento de origen y expone progreso, cancelación, manejo de detención u omisión, reversión y políticas de formulario, esquema, recursos y preferencias del visor- Importación de subconjunto de páginas —
ImportPagesByIndexcopia un arreglo explícito de índices base cero desde un documento de origen, con InsertAt = 0 para insertar antes de la página 1 o InsertAt = PageCount para agregar al final. Pase un arreglo de índices vacío para importar todas las páginas del origen- Composición N-up —
ImportNPagesToOnedevuelve unTPdfnuevo cuyas páginas son composiciones NumX×NumY de las páginas del documento de origen, dimensionadas en unidades de usuario PDF (1 unidad = 1/72 pulg)- Reordenamiento de páginas —
MovePagesreordena las páginas en sitio usando un arreglo de índices base cero y un índice de destino para la primera página movida- Validación de plan de páginas -
ValidatePagePlanprevisualiza mapeos de eliminación, movimiento, inserción, división y fusión, inventaría los efectos sobre navegación, etiquetas, formularios, árbol de estructura, características importadas y firmas, y rechaza los planes que dejarían objetivos colgantes o modificarían contenido firmado sin autorización explícita- Generación de diseño en dos pasadas -
GenerateLayoutmide y pagina texto ajustado, reglas, imágenes, XObjects de página, encabezados y pies de página antes de emitir atómicamente objetos de página nativos, mientras que los marcadores de posición estables{page}y{pages}preservan el número de páginas medido- Diseño paginado respaldado en disco -
GeneratePagedLayoutescribe comandos en almacenamiento buscable elegido por el llamador, restaura cada página a partir de segmentos compactos no contiguos, acota los arreglos de páginas retenidos con una caché LRU y anexa páginas PDFium secuencialmente- Diseño de tablas que cruzan páginas -
TPdfLayoutTableresuelve una sola vez las columnas fijas, fraccionales y según el contenido, repite las filas de encabezado contiguas, divide las filas del cuerpo elegibles, mantiene íntegros los grupos que abarcan filas y emite leyendas, bordes de celda, enlaces y una jerarquía semántica continua de Table / TR / TH / TD a través de las páginas- Nodos de diseño en caché - Los planes de diseño se almacenan en caché por identidades completas de restricción, contenido, fuente, estilo, origen y medidor, mientras que
TPdfLayoutCachedNodeconstruye perezosamente las plantillas repetidas y emite cada colocación desde un único Form XObject nativo reutilizable- Diseño automático de PDF etiquetado -
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 propiedad OBJR a partir del mismo plan de diseño medido; las restricciones de elementos mantienen juntos los bloques y los encabezados, aplican mínimos de viudas / huérfanas 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 proporcionados por el llamador con mapeos explícitos CID a GID y ToUnicode, subconjuntos opcionales seguros, respaldo controlado de fuente completa y verificaciones de integridad de extracción- Presupuesto de bytes unificado de caché -
TPdf.CacheBudgetBytescoordina escenas de página analizadas, miniaturas, datos de estructura, instantáneas de texto e instantáneas de objetos de página mediante una única LRU global medible, mientras queTPdfTileCachey la caché de fuentes del sistema pueden unirse a un gobernador elegido por el llamador- Proveedor de fuentes del sistema del host -
ConfigureSystemFontProviderdirige las solicitudes nativas de fuentes faltantes a través de un proveedor de la aplicación con validación de bytes, caché LRU acotada, gobernanza compartida de bytes opcional, respaldo 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 plantillas y flujos de trabajo de tipo "estampar una página en muchas". El objeto de página de destino se puede posicionar, escalar y rotar a través deFPDFPageObj_SetMatrixy los helpers deTPdfMatrix- Gestión de páginas — agregue, elimine y manipule páginas individuales;
AddPage(0, ...)inserta la primerísima 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 del tráiler — lea las entradas /ID permanentes y cambiantes del tráiler como bytes binarios
- Acciones JavaScript del documento — enumere los nombres y scripts de acciones JavaScript del árbol de nombres a nivel de documento
- Árbol de estructura de PDF etiquetado — inspeccione los elementos de estructura lógica, texto de accesibilidad, idioma, IDs de contenido marcado y jerarquía para páginas PDF etiquetadas
- Preferencias del visor — lea
PrintCopies,PrintPageRanges,PrintScalingyPrintPaperHandlingdel diccionario de preferencias del visor del documento; los PDF guardados tienen por defecto una acción de apertura en la primera página de tipo Fit Height
Operaciones de texto
- Extracción de texto — extraiga texto de páginas PDF con precisión a nivel de carácter mediante las propiedades
Text,TextInRectangle, las 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 caracteres, los metadatos de fuente, la identidad del objeto de texto, la semántica de Tagged PDF y un orden de respaldo por diseño físico- Detección y extracción de tablas -
ExtractTablesyExtractDocumentTablescombinan las cajas nativas de palabras con líneas de trazado transformadas para detectar tablas con bordes o alineadas por espacios en blanco, preservar tramos combinados, puntuar la confianza, marcar 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 diseño físico y la extracción de tablas en un árbol de nodos acotado y reutilizable 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 arriba abajo a un proveedor de la aplicación, mapea cuadriláteros de confianza mediante la geometría nativa de página y agrega texto buscable invisible sin recodificar las imágenes escaneadas- Unidades de lectura por oraciones - TPdf.ReadingUnits, TPdf.DocumentReadingUnits, TPdfView.ReadingUnits y BuildReadingUnits exponen registros TPdfReadingUnit de tamaño oración para escucha TTS sincronizada
- Selección visual de línea -
TPdfView.SelectLineAtselecciona la línea visual de texto correspondiente a una página contada desde uno y un índice de carácter contado desde cero, mediante el mismo modelo de límites de línea usado por el triple clic yShift+HomeoShift+End- Resaltado de lectura palabra 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 palabra por palabra actual en TPdfView; Controla el color de superposición usado para el cursor de lectura palabra 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 motores TTS del host, fragmentos hablados, devoluciones de llamada de posición de palabra, ritmo estimado, pausa y reanudación, y actualizaciones del cursor de palabras en TPdfView- Búsqueda de texto — encuentre texto con opciones de coincidencia de mayúsculas y minúsculas, palabra completa y consecutiva utilizando
FindFirst,FindNextyFindPrevious, o transmita coincidencias hacia adelante y hacia atrás en todo el documento conTPdf.CreateDocumentSearch, rectángulos de resultado en el espacio de la 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 queAddSearchTextHighlightanexa rangos únicos para términos adicionales, de modo que varias consultas puedan permanecer visibles juntas.ClearHighlightelimina el conjunto completo; navegar a otra página la limpia automáticamente porque los rangos de caracteres son específicos de cada página.HighlightColortieneclYellowcomo valor predeterminado y está publicada para que las aplicaciones puedan tematizar la superposición- Propiedades de carácter — acceda al tamaño de fuente, peso, ángulo y posición de caracteres individuales con las propiedades indexadas
CharacterAngle,CharacterFontSize,CharacterFontWeight,CharacterGenerated,CharacterIsHyphenyCharacterMapError- Soporte para caracteres europeos —
AddTextcarga y almacena en caché automáticamente la fuente TrueType del sistema correspondiente antes de crear un objeto de texto, de modo que los caracteres acentuados en checo, francés, alemán, español, portugués, polaco y turco que las fuentes estándar incorporadas de PDFium no pueden representar ahora se renderizan correctamente sin ningún cambio de código- Adición de texto — agregue texto nuevo a las 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 — obtenga propiedades de fuente, incluidos el nombre de la familia, el estado de incrustación, el ángulo cursivo, ascenso/descenso y los datos de fuente sin procesar, por cada objeto de página
Soporte para anotaciones
- Tipos de anotaciones — soporte para anotaciones de tipo texto, enlace, resaltado, subrayado, tachado y muchos otros tipos
- Creación de anotaciones — cree nuevas anotaciones de manera programática
- Edición de anotaciones — modifique las propiedades de las anotaciones existentes, incluidos el color, la transparencia y el contenido
- Anotaciones de enlace — maneje enlaces internos y externos con soporte para acciones
Soporte para formularios
- Accesores para llenado 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 llenado de formularios con teclado o voz
- Tipos de formularios — soporte para formularios AcroForm y XFA
- Llenado de formularios — llenado interactivo de formularios con soporte para JavaScript
- Selección de la DLL V8 — establezca
EnableV8Engineantes de cargar para usarpdfium.v8.dlldesde la carpetaDLLs\Win32oDLLs\Win64correspondiente y consulte la disponibilidad de los helpers V8/XFA medianteV8FeaturesAvailable,XfaBStrHelpersAvailableyGetRecommendedV8Flags- Acceso a campos — lea y escriba los valores de los campos de formulario por índice o posición
- Información de campos — acceda al tipo de campo, banderas, nombre y otras propiedades
- Banderas de campo — actualice las banderas de campo AcroForm por índice o posición mediante
SetFormFieldFlags/SetFormFieldFlagsAt, incluidas las banderas de solo lectura, obligatorio, contraseña y selección múltiple- Aplanado de formularios —
GenerateFormAppearancesregenera el stream de apariencia /AP de cada widget de formulario en cada página, yFlattenPage/FlattenAllPagesintegran las anotaciones y los campos de formulario en el contenido estático de la página (no editable)- Selección de texto del widget de formulario, portapapeles y deshacer / rehacer — sobre el widget AcroForm enfocado, el visor expone
GetSelectedFormText,CopySelectedFormTextToClipboard,CutSelectedFormTextToClipboard,PasteFormTextFromClipboard,SelectAllFormTextyFormUndo/FormRedo/FormCanUndo/FormCanRedo. El editor manejaCtrl+A,Ctrl+C,Ctrl+Insert,Ctrl+X,Shift+Delete,Ctrl+VyShift+Insert; cortar y pegar se rechazan en campos de solo lectura o en sesiones sin permiso de llenado 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 usan deltas bidireccionales acotados verificados con SHA-256- Recuperación ante fallos y autoguardado por confirmación — los paquetes de recuperación con suma de verificación vinculan las huellas digitales de origen y de recuperación a un diario de edición acotado, mientras que el autoguardado atómico actualiza un archivo complementario explícito después de cada confirmación, deshacer o rehacer sin reescribir el PDF de origen
Operaciones con imágenes
- Extracción de imágenes — extraiga bitmaps de las páginas PDF con la propiedad indexada
Bitmap; itereBitmapCountpara guardar cada imagen en disco- Inserción JPEG —
AddJpegImagerecibe un TStream con bytes JPEG sin procesar e incrusta la imagen como un XObject /DCTDecode sin recodificar- 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 con las unidades gráficas VCL o LCL (BMP, PNG mediante PngImage, JPG, ...) y comparte el pipeline de AddPicture.AddImage(TBitmap)omite el intermediario TPicture, lo cual simplifica a los llamadores que ya tienen un TBitmap de renderizado o de tareas de generación por lotes- Perfil ICC de imagen — los objetos de página de imagen exponen sus datos de perfil ICC incrustados cuando están presentes (binding para
FPDFImageObj_GetIccProfileDataDecoded)- Generación de miniaturas — genere bitmaps de miniaturas de la página actual mediante la propiedad
Thumbnailo renderice cualquier página base uno conTPdf.RenderPageThumbnailsin cambiarPageNumber, con una LRU consciente de revisiones acotada por techos de entradas y de bytes de píxeles- Caché de escenas de página analizadas —
TPdf.RenderPageByIndex,RenderPageThumbnailyExtractThumbnailreutilizan escenas de página PDFium acotadas en caché LRU mientras que las ediciones de páginas, los cambios en el árbol de páginas, el estado de formularios y el cierre del documento invalidan las entradas obsoletas
Unidades helper
- Infraestructura asíncrona —
FPdfAsynccombina cancelación cooperativa estructurada con devoluciones de llamada removibles y fuentes de fecha límite, envío configurable de resultados deTPdfFuture<T>y unTPdfAsyncExecutorreutilizable con workers fijos, cuatro colas de prioridad FIFO, contrapresión de cola acotada, handles por tarea, diagnósticos de tiempos, estadísticas agregadas y apagado ordenado- Adaptador de stream —
TPdfStreamAdapterconecta unTStreamde Pascal a las llamadasFPDF_FILEACCESSde PDFium, de modo queLoadCustomDocumentlea bloques bajo demanda en lugar de almacenar en búfer todo el PDF en memoria- Sesiones de descarga progresiva -
TPdfProgressiveDocumentmantiene vivo el proveedor nativo de disponibilidad de PDFium, alimenta las sugerencias de documento, formulario y página enTPdfRangeRequestScheduler, fusiona los rangos faltantes, adelanta las transferencias en segundo plano ante bytes críticos para la página, acota tamaños de solicitud y reintentos, cancela transportes redundantes y abre una página linearizada antes de que llegue el PDF completo- Inspección de flujos acotada -
TPdfStreamInspectorinventaría los objetos de flujo físicos, expone ventanas seguras de bytes sin procesar y decodificación ordenada de filtros generales, informa las rutas de acceso nativo de imagen y adjuntos, y exige presupuestos de origen, salida, diccionario, cantidad y razón de expansión- Normalización de flujos de contenido -
TPdf.SaveAsNormalizedContenttokeniza el contenido lógico de la página, elimina comentarios, valida el equilibrio de estado y de contenedores, preserva los operadores no admitidos y los datos de imágenes en línea, y fusiona de forma segura los arreglos/Contents- Salida Fast Web View -
TPdf.SaveAsLinearizedescribe los objetos de la primera página antes que los de las páginas posteriores, emite dos secciones de referencias cruzadas y construye tablas de sugerencias de desplazamiento de página y de objetos compartidos, de modo que un cliente HTTP Range puede abrir una página solicitada sin descargar el archivo completo- Salida de flujos de objeto -
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 adaptativas de tipo 2 para archivos más pequeños sin sacrificar el acceso aleatorio- Guardado incremental de objetos modificados —
TPdf.BeginIncrementalSaveyCommitIncrementalSavecomparan instantáneas semánticas estables, preservan cada byte anterior cifrado o no cifrado, heredan parámetros de seguridad R5, R6 o R7, anexan solo los objetos modificados, reabren estrictamente cada resultado y usan un archivo complementario duradero más reemplazo atómico para las confirmaciones a archivo- Control de contenido opcional -
TPdf.InspectOptionalContentinventaría capas, configuraciones, metadatos de uso, grupos de radio, orden, bloqueos, políticas OCMD y expresiones de visibilidad, mientras queSaveAsOptionalContentConfiguredescribe estados de capa deterministas que PDFium aplica mediante su contexto de renderizado nativo- Almacenamiento de trabajo acotado —
TPdfRandomAccessStoremantiene los datos pequeños en memoria, pasa una sola vez a un archivo temporal privado que se elimina al cerrar cuando alcanza un techo elegido 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 del catálogo de open-action y de etiquetas de página usan ventanas de tamaño fijo y un índice de objetos disperso y diferido- Consulta nativa de versión —
TPdf.PdfVersionreutiliza el estado del analizador deFPDF_GetFileVersionpara la semántica de encabezado y catálogo, con una única verificación de encabezado de ocho bytes para rechazar degradaciones malformadas del catálogo- Kit de herramientas de geometría de matrices —
FPdfMatrixenvuelve elFS_MATRIXde PDFium con poscomposición y precomposición, transformaciones conscientes del pivote, ajuste de rectángulos stretch / contain / cover, diagnósticos de invertibilidad según la escala, descomposición, helpers de inversa sin mutación, mapeo de vectores y cuadriláteros, lotes de puntos o rectángulos con una sola asignación, variantes en el sitio y límites transformados en una pasada- Renderizado progresivo cancelable —
TPdf.RenderPageProgressiveejecuta el bucleFPDF_RenderPageBitmap_Start+RenderPage_Continuede PDFium y consulta unIPdfCancellationTokenentre iteraciones mediante el callbackIFSDK_PAUSE, de modo que los renderizados largos a alto DPI puedan abortar a la mitad de la 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 intermedio interno, ahorrando una copia en memoria de ancho × alto × 4 bytes por renderizado — más perceptible en alto DPI (paneles de miniaturas, exportación con calidad de impresión, exportación por lotes). Se preserva una ruta alternativa por línea de escaneo cuando el DIB de destino no puede envolverse 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 de baja visión en vivo —
TPdfView.OptionsadmitereInvertyreNightDuotone, conNightDuotoneInkyNightDuotonePapercontrolando la paleta nocturna en vivo antes de pintar superposiciones
Operaciones de dibujo
- Dibujo de trazados — cree trazados 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 varios modos de mezcla PDF
- Estilos de línea — configure el extremo de línea, la unión de línea y el ancho del trazo
Firmas digitales
- Detección de firmas — detecte y enumere firmas digitales en los documentos PDF
- Información de firmas — acceda al contenido de la firma, rango de bytes, sub-filtro, motivo y fecha
- Permisos MDP — consulte los permisos de detección y prevención de modificaciones del documento
- Análisis de revisiones post-firma —
AnalyzeSignatureRevisionsclasifica los cambios incrementales sobre los bytes originales frente a DocMDP y FieldMDP, identifica actualizaciones de material de validación e informa definiciones sombra u objetos comprimidos sin resolver, sin volver a guardar el documento- Perfiles de curvas elípticas de PDF 2.0 — la validación PAdES identifica firmas NIST, Brainpool, Ed25519 y Ed448, verifica la congruencia entre curva y resumen y los parámetros de AlgorithmIdentifier, e informa la criptografía nativa no soportada de forma independiente de las combinaciones inválidas
Soporte para archivos adjuntos
- Acceso a archivos adjuntos — lea, cree, modifique y elimine archivos adjuntos incrustados
- Extracción por lotes acotada —
ReadAttachmentMetadatainventaría los adjuntos una sola vez yExtractAttachmentsToStreamsescribe una carga útil decodificada a la vez bajo controles por archivo, agregados, por fragmentos y de cancelación- Nombres de archivos adjuntos — acceda a los nombres de archivo de los adjuntos
- Tipos de archivos adjuntos — lea los valores de subtipo MIME del archivo incrustado cuando estén presentes
- Marcadores — navegue por los marcadores del documento con soporte jerárquico mediante el arreglo
Bookmarksy los helpers de recorridoBookmarkChildren,HasBookmarkChildrenyBookmarkFrom- Destinos con nombre — acceda a los destinos con nombre por índice o nombre a través de
Destination,DestinationByNameyDestinationCount- Etiquetas de página — obtenga las etiquetas de página para cada página mediante
PageLabel; útil cuando los documentos usan números romanos para las páginas preliminares- Enlaces web — detecte y navegue por los 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 a través de
LinkAnnotation,LinkAnnotationCountyTPdfView.LinkAnnotationAtPos- Manejo seguro de clics en enlaces — TPdfView dispara los eventos
OnAnnotationLinkClick/OnWebLinkClickantes del manejo automático goto/URI, con las acciones de lanzamiento deshabilitadas por defecto. La detección de clics en enlaces se ejecuta únicamente cuando el gesto es un clic en lugar de un arrastre, usando un ancla MouseDown fresca para que los gestos de paneo sigan fluyendo a través de la ruta de desplazamiento existente sin cambios
Renderizado
- Renderizado de alta calidad — renderice páginas a un contexto de dispositivo, bitmap o mosaico mediante
RenderPage/RenderTile, con escrituras directas zero-copy en el búfer DIB de destino- Renderizado progresivo cancelable —
RenderPageProgressiveejecuta el bucle progresivo de PDFium y consulta unIPdfCancellationTokenentre iteraciones, devolviendoprsDone,prsCancelledoprsFailed. El bitmap conserva el trabajo parcial realizado hasta el momento si se cancela- Renderizado paralelo de páginas —
RenderPagesParallelcaptura el documento actual una sola vez, proporciona a cada worker un módulo PDFium y un documento cargados de forma independiente, preserva el orden de las solicitudes 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 se intersectan y las anotaciones superpuestas, 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 y banderas 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 los exports 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 de carga opcional mientras los workers propiedad de la aplicación renderizan con instancias TPdf separadas
- Rotación de páginas — 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 vistas de dos páginas). El helper a nivel de unidadComputeSpreadPagesexpone los cálculos de páginas en vista doble sin instanciar un visor- Modo de ajuste —
FitModeelige cómo se posiciona la página en el viewport:pfmNone(zoom manual),pfmActualSize(100%),pfmFitPage(la página completa cabe en el viewport),pfmFitWidth(el ancho de la página coincide con el ancho del viewport) ypfmFitHeight(la altura de la página coincide con la altura 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 revierte apfmNone), siguiendo la convención de los visores PDF estándar- 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. El valor predeterminado esclWhite, de modo que las páginas PDF ahora se renderizan blancas como papel sin importar el tema de la aplicación anfitriona. Los visores en modo oscuro pueden mantener el área de desplazamiento oscura mientras dejan la página PDF real blanca (o en cualquier color que la aplicación elija)- Selección interactiva de texto — selección de texto por arrastre del usuario final sobre las páginas PDF, con detección automática que cambia entre selección y paneo: al hacer clic sobre un carácter se inicia un arrastre de selección, al hacer clic sobre un espacio en blanco se panea. El doble clic selecciona la palabra, el triple clic selecciona la línea,
Ctrl+Aselecciona la página (ambas páginas en modo de vista doble),Ctrl+Ccopia comoCF_UNICODETEXT,Shift+arrowsextienden la selección, pasar el puntero sobre el texto cambia el cursor acrIBeam, y arrastrar hacia un borde del visor desplaza automáticamente la página. Nuevos publicados:SelectionColoryOnSelectionChange; nuevos públicos:HasSelection,SelectedText,SelectionCharCount,ClearSelection,SelectAll,CopySelectionToClipboard. Los modos de visualización en vista doble seleccionan a través de ambas páginas visibles uniéndose con CR/LF. Se adjunta automáticamente un menú contextual predeterminado de Copiar con clic derecho cuando el host no ha asignado su propioPopupMenu. Controlado por la banderaAllowUserTextSelectionde v1.17.0 para hosts tipo kiosco- Mapeo de coordenadas — convierta entre las coordenadas de dispositivo del visor y las coordenadas de página PDF con
DeviceToPage/PageToDevice, incluidos los overloads que reciben unTRecty devuelven unTPdfRectangle- Selección de texto y prueba de impacto — resuelva los caracteres bajo los puntos del visor con
CharacterIndexAtPosy pinte los resaltados de selección de texto mediantePaintSelection- Mouse y teclado — soporte completo de dispositivos de entrada con desplazamiento por arrastre del mouse, atajos PgUp / PgDn / Ctrl+Inicio / Ctrl+End, y navegación por página con rueda hacia arriba/abajo. Ctrl+rueda está reservado para el zoom de la aplicación y es omitido por el manejador de navegación
- Restricción de entrada del usuario —
AllowUserPageChangecontrola los atajos de teclado de página,ChangePageOnMouseScrollingcontrola los saltos de página con la rueda, yAllowUserTextSelectioncontrola la entrada de selección de texto por mouse/teclado. Las tres tienen True como valor predeterminado; cámbielas a False para bloquear kioscos, paneles de vista previa o integraciones de solo lectura sin necesidad de subclasear- Superposición de renderizado asíncrono —
AsyncRendering,LoadingTextyLoadingColordibujan un pequeño indicador "Cargando…" sobre la página renderizada, de modo que las aplicaciones que usan su propio worker para renderizados largos compartan una indicación visual coherente. Los valores predeterminados preservan el comportamiento existente.TPdfahora serializa las llamadas de renderizado y descarga de página por instancia; las aplicaciones siguen siendo responsables del despacho de workers y deben evitar mutar un documento mientras un renderizado está en curso- Manejo seguro de clics en enlaces —
LinkOptionses un conjunto publicado que controla el comportamiento automático para los cuatro tipos de acciones de enlace PDF:loAutoGoto(salto de página),loAutoOpenURI(ShellExecute),loAutoLaunch(ShellExecute) yloAutoEmbeddedGoto(reservado). Los valores predeterminados habilitan únicamenteloAutoGotoyloAutoOpenURI;loAutoLaunchyloAutoEmbeddedGotopermanecen apagados para que un clic accidental no pueda ejecutar un programa arbitrario.OnAnnotationLinkClickyOnWebLinkClickse disparan antes de cualquier acción automática y permiten que la aplicación marque el evento como Handled o lo redirija- Interacción con formularios — edición interactiva de formularios dentro del visor, además de los helpers de selección / Deshacer / Rehacer de v1.23.0
- Estilo visual —
PageShadowSize,PageShadowColoryPageBorderColorpintan una sombra paralela opcional debajo del rectángulo de la página y un borde de un píxel a su alrededor;SmoothScrollahora anima los comandos de desplazamiento de línea/página en segmentos manejados 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 al pasar el puntero y al seleccionar, además de navegación con clic. Diseñado para colocarse 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 predeterminado), se garantiza que todos los streams PDF estén comprimidos con FlateDecode al guardar- Postprocesamiento — el motor de compresión escanea los datos PDF guardados y comprime cualquier stream sin comprimir usando zlib con compresión máxima
- Reconstrucción de referencias cruzadas — 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 sin modificación
Seguridad
- Soporte para contraseñas — 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 para guardar reportes TXT / JSON y copiar como TXT- Kit de herramientas DER acotado —
FPdfAsn1codifica números de etiqueta bajos y altos, valores tipados, colecciones SET OF ordenadas y formas canónicas de tiempo o cadena; sus ventanas de lectura sin copia, decodificadores tipados y validador con recursos limitados soportan flujos de trabajo de CMS, PAdES, certificados y marcas de tiempo- Validación a largo plazo específica de firmas —
TPadesDssOptions.Vrisescribe diccionarios VRI indirectos con clave de 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 marcador de posición y la huella del PDF preparado para firma por HSM o en la nube, mientras queCompletePadesRemoteSignaturerechaza sesiones modificadas, reutilizadas, sobredimensionadas o con resumen no coincidente antes de escribir la salida- Análisis de política de revisiones de firma —
AnalyzeSignatureRevisionsreconstruye cadenas de revisiones clásicas, híbridas y de flujos xref, aplica DocMDP y FieldMDP por firma y falla de forma cerrada ante cambios malformados, sombra, comprimidos o fuera de presupuesto- Perfiles de firma resistentes a ambigüedades — 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 multi-firma —
BuildPadesEvidenceReportcorrelaciona hechos de PDFium, política CMS, estado de confianza y de marca de tiempo, hashes de la ruta de certificados, cobertura DSS/VRI y decisiones de revisiones con salida JSON y CSV acotada- Renovación de marca de tiempo de archivo —
RenewPadesArchiveTimestampanexa un Document Time-stamp RFC 3161 sobre la historia de firmas existente exacta, opcionalmente actualiza primero el DSS completo y valida la cadena B-LTA resultante antes de la salida- Validación de confianza asíncrona —
ValidatePadesTrustyValidatePadesTrustAsyncverifican firmas desasociadas sobre los bytes originales, cadenas del firmante y de la TSA, evidencia de revocación en línea opcional y tokens de marca de tiempo RFC 3161 con progreso por etapas, recuperación acotada y cancelación cooperativa- Confianza calificada —
TPdfEuropeanTrustedListanaliza solo listas de confianza de ETSI autenticadas por el llamador, reautentica el XML en caché, acepta fuentes de actualización propiedad del llamador y suministra evaluación sin conexión de servicios calificados 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 Level 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 a través de
PrintCopies,PrintPageRanges(rangos de páginas base uno),PrintScalingyPrintPaperHandling;SetPdfPrintPaperHandlingDevModemapea la sugerencia de impresión a doble cara enDEVMODE.dmDuplexde Windows- Impresión N-up — los demos
PrintPreferencesen Delphi, C++Builder y Lazarus muestran la composición N-up por hoja (1 / 2 / 4 / 9 páginas por hoja) con filtrado de páginas pares/impares, renderizado en escala de grises, bordes de celda opcionales de 1 píxel, preferencias de impresión del autor PDF y mapeo de intención dúplex medianteSetPdfPrintPaperHandlingDevMode
Demos incluidos
Los árboles
Demo\Delphi,Demo\CBuilderyDemo\Lazarusincluyen proyectos de muestra ejecutables que ejercitan la superficie de API en vivo en las tres familias de IDE. Destacados:
- PDFViewer / MultiPageViewer / SplitView — uso integral de TPdfView: cargar, navegar, hacer zoom, rotar, vista de dos páginas, diseños conscientes de portada, y comparación lado a lado de PDF en Delphi / C++Builder / Lazarus con comandos sincronizados; los demos de visor también son pruebas de velocidad prácticas para PDF de varios gigabytes, donde documentos de 2,x GB pueden alcanzar una primera vista utilizable casi de inmediato mientras el renderizado de páginas se mantiene responsivo
- ViewerInteractionLab — muestras enfocadas de interacción con TPdfView en Delphi, C++Builder y Lazarus para modos de visualización, modos de ajuste, colores de página, rotación, resaltado de búsqueda, selección de texto, vista previa del texto seleccionado, acciones de portapapeles y retroalimentación de coordenadas DeviceToPage
- SearchAndSelect — muestras de flujo de trabajo enfocadas en Delphi, Lazarus y C++Builder para listado de resultados de búsqueda en todas las páginas, navegación a coincidencia anterior/siguiente, salto a un resultado con doble clic,
HighlightSearchText, búsqueda con coincidencia de mayúsculas/palabra completa,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelectiony modos de visualización en vista doble- PreflightReport — objetos
FPdfPreflightReportreutilizables que recopilan resultados de PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R y PDF/VT con estado, severidad Info / Warning / Error, búsqueda, consulta, 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 trabajo de consola proporcionan vistas previas, enrutamiento por lotes, resúmenes, adjuntos de reportes y control del código de salida para CI- ContentExtractionLab — flujo de trabajo unificado de inventario de contenido en Delphi, Lazarus y C++Builder para metadatos del 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ía todos/ninguno, guardado del PDF de origen y acciones de copia de reporte
- WatermarkStamp — flujo de trabajo reutilizable de Form XObject en Delphi, Lazarus y C++Builder para marcas de agua centradas, sellos en las esquinas y etiquetas de número de página en un PDF de destino de varias páginas
- CreatePDF — construya un PDF de varias páginas desde cero con texto, imágenes, trazados, tablas y composición de marca de agua; incluye una opción de «Texto Europeo» para escribir texto acentuado en checo / francés / alemán / español / portugués / polaco / turco y así verificar la selección de fuentes y el manejo de Unicode
- ExtractText / ExtractImages / ContentExtractionLab — guarde el texto extraído (incluyendo salida separada por página) o las imágenes incrustadas en disco, o genere un reporte de inventario de contenido multicategoría en una sola pasada
- FormFill — lea los metadatos de campos AcroForm, escriba valores, regenere las apariencias /AP y guarde el resultado editable o el aplanado
- 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 múltiples PDFs de origen (con selección de rango de páginas por archivo, ruta de salida opcional, registro de ejecución, botón de cancelar y resumen de finalización de la combinación) o divida un PDF en archivos de salida por página
- PDFtoJpg / BatchExport — conversión one-shot o por lotes de varios archivos PDF a JPG en Delphi, C++Builder y Lazarus con progreso general por archivo, progreso actual por página, entradas de DPI / calidad / contraseña y un lote cancelable de manera cooperativa respaldado por
IPdfCancellationToken- StandardsLab — muestras de flujo de trabajo en Delphi, C++Builder y Lazarus para validación PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R y PDF/VT, reporte de problemas y salidas de guardado orientadas a estándares
- PrintPDF / PrintPreferences — impresión estándar de PDF en Delphi, C++Builder y Lazarus con vista previa, rangos de páginas, copias, colación, progreso y cancelación (PrintPDF), más composición N-up por hoja en Delphi, C++Builder y Lazarus con filtrado par/impar y preferencias de impresión del autor 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 y reportes de auditoría TXT / JSON
- Attachment — cree PDFs, agregue / liste / extraiga / elimine / guarde archivos adjuntos incrustados con visualización del subtipo MIME
- ImageToPDF — conversión por lotes de imágenes en Delphi, C++Builder y Lazarus a un único PDF, una imagen por página, con vista previa 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 prueba, de modo que el comportamiento permanece alineado byte a byte entre las tres familias de IDE
Soporte de plataformas
- 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 para Free Pascal / Lazarus
- Win32 / Win64 — plataformas Windows tanto de 32 como de 64 bits
La comparación alineada identifica páginas insertadas, eliminadas y movidas, con cambios de texto Unicode y varias regiones visuales dentro de límites de trabajo; las superposiciones permiten exportar esos cambios
La combinación transaccional de navegación conserva la jerarquía de marcadores, los estilos, las acciones URI y los destinos de página reasignados al importar páginas seleccionadas y reordenadas
El OCR opcional con Tesseract agrega texto buscable a páginas escaneadas, con diagnósticos explícitos de dependencias, cancelación y presupuestos de recursos
La combinación transaccional de 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