Componenti principali
- TPdf - Componente principale per la gestione dei documenti PDF: apertura, navigazione, estrazione del testo e modifica dei documenti PDF
- TPdfView - Componente visuale per la visualizzazione e l'interazione con le pagine PDF
- TPdfReadingSession - Componente di orchestrazione della lettura ad alta voce per i motori TTS host e il tracciamento delle parole di TPdfView
- TPdfThumbnailView - Pannello laterale scorrevole di miniature per la navigazione tra le pagine
- Piattaforme LCL native - Linux Qt6 e macOS Cocoa usano PDFium nativo, binding LP64 corretti, servizi di font e file della piattaforma e il reale layout dei canali bitmap; vedere la configurazione nativa per gli ambienti Free Pascal/LCL qualificati e i limiti delle capacità
Operazioni sui documenti
- Caricamento documenti - Carica file PDF da disco, stream di memoria, array di byte completi, finestre di array di byte
Index/Counta base zero o adattatori TStream su richiesta tramiteLoadCustomDocument. I criteri compatible, strict e recovery aggiungono diagnostica delimitata classica, ibrida e xref-stream senza sostituire il parser semantico di PDFium- Output riparato verificato -
SaveAsRepairedcrea una copia completa a revisione singola ed esegue indipendentemente un caricamento rigoroso del suo xref e della struttura delle pagine prima di restituire i byte o sostituire atomicamente un file- Grafo oggetti tipizzato -
ExportObjectGraphemette JSON tipizzato delimitato per i valori diretti e object-stream, mentreSaveAsObjectGraphPatchedapplica modifiche validate del dizionario di primo livello come revisione incrementale preparata ed esegue un caricamento rigoroso del risultato prima della consegna- Protezione con password - Apre documenti PDF protetti da password e riporta i
UserPermissionseffettivi per la sessione autenticata- Creazione documenti - Costruisce nuovi documenti PDF da zero con
CreateDocument,AddPage,AddText,AddImage,AddPicture,AddJpegImageeCreatePath- Salvataggio documenti - Salva i documenti modificati con varie opzioni (incrementale, rimozione della sicurezza) e versioni PDF di destinazione esplicite da PDF 1.0 a PDF 1.7
- Output PDF/A-1b -
SaveAsPdfA/SaveAsPdfAToStreampost-elaborano il salvataggio di base con un aggiornamento incrementale che inietta uno stream di metadati XMP, un OutputIntent ICC sRGB e un catalogo del documento aggiornato, in modo che il risultato sia conforme a PDF/A-1b. I profili ICC personalizzati sono supportati tramiteTPdfASaveOptions.IccProfileData- Validazione PDF/A -
ValidatePdfAe la proprietà di sola letturaPdfAConformancescansionano un documento aperto cercando marcatoripdfaidXMP, OutputIntent con ICC incorporato, presenza di cifratura, e riportano il livello di conformità (pac1a,pac1b,pac2b,pac3b,pacNoneopacUnknown) oltre a un elenco di vociTPdfAValidationIssueche descrivono ciascun problema rilevato- Validatore di conformità versione PDF - Quando SaveAs ha come destinazione PDF 1.0-1.7, lo scrittore rifiuta qualunque voce di dizionario, filtro, sottotipo di annotazione, tipo di azione, font, spazio colore o parametro di cifratura introdotto dopo la versione di destinazione scelta (per esempio JBIG2Decode, MarkInfo, OutputIntents, AES / AES-256, annotazioni Polygon / Caret / Watermark / Redact, azioni JavaScript / Trans / SetState)
- Compressione degli stream - La compressione automatica FlateDecode garantisce che tutti gli stream PDF siano compressi in modo ottimale al salvataggio; impostare
Compressed := Falseper disabilitarla nelle pipeline di debug- Unione in batch scalabile -
MergeFilesimporta sorgenti supportate su file con intervalli di pagine e password per sorgente, tiene aperto al massimo un documento sorgente ed espone progresso, annullamento, gestione di stop o skip, rollback e criteri per moduli, struttura, risorse e preferenze del visualizzatore- Importazione di un sottoinsieme di pagine -
ImportPagesByIndexcopia un array di indici espliciti a base zero da un documento sorgente, con InsertAt = 0 per inserire prima della pagina 1 o InsertAt = PageCount per accodare. Passa un array di indici vuoto per importare tutte le pagine sorgente- Composizione N-up -
ImportNPagesToOnerestituisce un nuovoTPdfle cui pagine sono composti NumX×NumY delle pagine del documento sorgente, dimensionati in unità utente PDF (1 unità = 1/72 di pollice)- Riordino delle pagine -
MovePagesriordina le pagine in posto utilizzando un array di indici a base zero e un indice di destinazione per la prima pagina spostata- Validazione del piano di pagine -
ValidatePagePlanmostra in anteprima le mappature di eliminazione, spostamento, inserimento, divisione e fusione, inventaria gli effetti su navigazione, etichette, moduli, albero della struttura, funzionalità importate e firme, e rifiuta i piani che lascerebbero destinazioni pendenti o modificherebbero contenuto firmato senza autorizzazione esplicita- Generazione del layout in due passate -
GenerateLayoutmisura e impagina testo a capo, righe, immagini, XObject di pagina, intestazioni e piè di pagina prima di emettere atomicamente gli oggetti pagina nativi, mentre i segnaposto stabili{page}e{pages}preservano il numero di pagine misurato- Layout impaginato supportato su disco -
GeneratePagedLayoutscrive i comandi su archiviazione seekable scelta dal chiamante, ripristina ogni pagina da segmenti compatti non contigui, delimita gli array di pagina trattenuti con una cache LRU e accoda le pagine PDFium in sequenza- Layout di tabelle su più pagine -
TPdfLayoutTablerisolve una sola volta le colonne fisse, frazionate e dimensionate sul contenuto, ripete le righe di intestazione contigue, divide le righe del corpo idonee, mantiene intatti i gruppi con row-span ed emette didascalie, bordi delle celle, link e un'unica gerarchia semantica continua Table / TR / TH / TD attraverso le pagine- Nodi di layout in cache - I piani di layout vengono memorizzati in cache per identità complete di vincoli, contenuto, font, stile, sorgente e misuratore, mentre
TPdfLayoutCachedNodecostruisce in modo pigro i modelli ripetuti ed emette ogni posizionamento da un unico Form XObject nativo riutilizzabile- Layout automatico di PDF con tag -
GenerateTaggedLayoutemette MCID nativi, artifact, un albero di struttura Document, mappature ParentTree e IDTree, intestazioni, elenchi, figure con testo alternativo, intestazioni di tabella e annotazioni Link con ownership OBJR a partire dallo stesso piano di layout misurato; i vincoli sugli elementi tengono insieme blocchi e intestazioni, impongono minimi di vedova / orfana e forzano interruzioni di pagina fisiche- Modifica del contenuto contrassegnato -
PageObjectMarks,AddPageObjectMark,SetPageObjectMarkParam,RemovePageObjectMarkParameRemovePageObjectMarkispezionano e mutano gli elenchi di proprietà BDC tramite marche native stabili- Testo bidi e script complessi -
AddShapedTextconverte sequenze direzionali, forme contestuali, legature, avanzamenti e offset in glifi CID Type 2 posizionati, mentre le mappature ToUnicode generate eActualTextpreservano la semantica Unicode logica- Authoring di font CID Type 2 -
AddCidType2Textincorpora dati TrueType forniti dal chiamante con mappature esplicite CID-to-GID e ToUnicode, subsetting opzionale sicuro, fallback controllato al font completo e controlli di integrità dell'estrazione- Budget di byte unificato per la cache -
TPdf.CacheBudgetBytescoordina scene di pagina analizzate, miniature, dati di struttura, istantanee di testo e istantanee di oggetti pagina attraverso un unico LRU globale misurabile, mentreTPdfTileCachee la cache dei font di sistema possono unirsi a un governor scelto dal chiamante- Provider dei font di sistema dell'host -
ConfigureSystemFontProviderinstrada le richieste native di font mancanti attraverso un provider dell'applicazione con validazione dei byte, caching LRU delimitato, governance opzionale dei byte condivisi, fallback nativo, estrazione delle tabelle e statistiche del ciclo di vita- Riutilizzo pagine tramite Form XObject -
CreateXObjectFromPageproduce un handle riutilizzabileTPdfXObjectda qualsiasi pagina di un altro documento;InsertFormObjectFromXObjectinserisce UNA copia della pagina incapsulata nella pagina corrente. Ideale per filigrane, sovrapposizioni di modelli e flussi di lavoro "applica una pagina su molte". L'oggetto pagina di destinazione può essere posizionato, scalato e ruotato tramiteFPDFPageObj_SetMatrixe gli helperTPdfMatrix- Gestione delle pagine - Aggiunge, elimina e manipola pagine individuali;
AddPage(0, ...)inserisce la primissima pagina e la attiva immediatamente- Riquadri di pagina - Legge e scrive MediaBox, CropBox, BleedBox, TrimBox e ArtBox sulla pagina corrente
- Lingua del catalogo - Legge e scrive la lingua del documento memorizzata nella voce /Lang del catalogo
- ID file del trailer - Legge le voci /ID permanenti e mutevoli del trailer come byte binari
- Azioni JavaScript del documento - Enumera nomi e script delle azioni JavaScript di livello documento dal name tree
- Albero della struttura PDF taggato - Ispeziona elementi di struttura logica, testo per l'accessibilità, lingua, ID di contenuto contrassegnato e gerarchia per le pagine PDF con tag
- Preferenze del visualizzatore - Legge
PrintCopies,PrintPageRanges,PrintScalingePrintPaperHandlingdal dizionario delle preferenze del visualizzatore del documento; i PDF salvati impostano per default un'azione di apertura "Fit Height" sulla prima pagina
Operazioni sul testo
- Estrazione del testo - Estrae il testo dalle pagine PDF con precisione a livello di carattere tramite le proprietà
Text,TextInRectangle,Characterindicizzata,CharacterRectangleeCharacterOrigin- Modello di testo strutturato -
GetStructuredTextcostruisce una gerarchia delimitata di pagine, blocchi, righe e segmenti stilizzati a partire dalla geometria nativa dei caratteri, dai metadati dei font, dall'identità degli oggetti testo, dalla semantica del PDF con tag e dall'ordinamento di fallback del layout fisico- Rilevamento ed estrazione di tabelle -
ExtractTableseExtractDocumentTablescombinano le caselle di parola native con le righe dei tracciati trasformate per rilevare tabelle con bordi o allineate sugli spazi vuoti, preservano le celle unite, attribuiscono punteggi di confidenza, contrassegnano le continuazioni di pagina ed emettono CSV o JSON- Reflusso semantico e HTML responsivo -
BuildReflowDocumentcombina la semantica del PDF con tag, l'inferenza del layout fisico e l'estrazione delle tabelle in un albero di nodi riutilizzabile e delimitato il cui output HTML sicuro preserva intestazioni, paragrafi, elenchi, figure, sezioni di pagina e celle delle tabelle- Livello OCR ricercabile -
ApplyOcrSearchLayerpassa render BGRA delle pagine dall'alto verso il basso e delimitati a un provider dell'applicazione, mappa i quadrilateri di confidenza attraverso la geometria nativa della pagina e aggiunge testo invisibile ricercabile senza ricodificare le immagini scansionate- Unità di lettura per frase - TPdf.ReadingUnits, TPdf.DocumentReadingUnits, TPdfView.ReadingUnits e BuildReadingUnits espongono record TPdfReadingUnit di dimensione frase per l'ascolto TTS sincronizzato
- Selezione della riga visiva -
TPdfView.SelectLineAtseleziona la riga di testo visiva contenente una pagina a base uno e un indice di carattere a base zero attraverso lo stesso modello di confini di riga usato dalla selezione con triplo clic e daShift+HomeoShift+End- Evidenziazione della lettura a livello di parola -
TPdf.PageWordBoxes,TPdfView.PageWordBoxes,BuildWordBoxes,WordBoxIndexAtCharIndex,TPdfView.SelectWordBox,TPdfView.SelectWordSpan,TPdfView.TrackReadingWordAt,TPdfView.SetReadingWord,TPdfView.ClearReadingWord,ReadingWordColor,ReadingWordFollowMappa un offset di carattere della pagina sulla TPdfWordBox che lo contiene, la evidenzia e restituisce l'indice della parola; Evidenzia una TPdfWordBox come parola pronunciata corrente in TPdfView; Cancella la sovrapposizione del cursore di lettura a livello di parola corrente in TPdfView; Controlla il colore della sovrapposizione usato per il cursore di lettura a livello di parola corrente; Controlla se TPdfView scorre fino alla parola pronunciata corrente durante il tracciamento della lettura- Orchestrazione della sessione di lettura ad alta voce -
TPdfReadingSession,TPdfSpokenText,SpokenTextAppend,BuildSpokenTextFromWords,SpokenToPageChareEstimateSpokenWordIndexcoordinano i motori TTS host, i blocchi parlati, i callback della posizione delle parole, il ritmo stimato, la gestione pausa / ripresa e gli aggiornamenti del cursore parola di TPdfView- Ricerca testo - Trova testo con opzioni di ricerca case-sensitive, parola intera e consecutiva utilizzando
FindFirst,FindNexteFindPrevious, oppure scorre in avanti e indietro le corrispondenze nell'intero documento conTPdf.CreateDocumentSearch, rettangoli dei risultati nello spazio pagina, annullamento cooperativo e memoria costante di handle di pagina- Sovrapposizione di evidenziazione della ricerca -
TPdfView.HighlightSearchTextsostituisce la sovrapposizione delle corrispondenze della pagina corrente, mentreAddSearchTextHighlightaccoda intervalli univoci per termini aggiuntivi così che più query possano restare visibili insieme.ClearHighlightrimuove l'insieme completo; passare a un'altra pagina lo cancella automaticamente perché gli intervalli di caratteri sono specifici per pagina.HighlightColorèclYellowper default ed è pubblicato così che le applicazioni possano personalizzare l'aspetto della sovrapposizione- Proprietà dei caratteri - Accede a dimensione del font, peso, angolo e posizionamento per singoli caratteri tramite le proprietà indicizzate
CharacterAngle,CharacterFontSize,CharacterFontWeight,CharacterGenerated,CharacterIsHypheneCharacterMapError- Supporto caratteri europei -
AddTextcarica e mette in cache automaticamente il font TrueType di sistema corrispondente prima di creare un oggetto di testo, quindi i caratteri accentati ceco, francese, tedesco, spagnolo, portoghese, polacco e turco che i font standard incorporati di PDFium non possono rappresentare ora vengono resi correttamente senza alcuna modifica al codice- Aggiunta di testo - Aggiunge nuovo testo alle pagine PDF con font personalizzati, colori, trasparenza e rotazione
- Posizionamento degli oggetti testo - Imposta le posizioni per singolo carattere per gli oggetti testo esistenti tramite
SetTextPositionseTPdfSingleArray- Informazioni sui font - Recupera le proprietà dei font, tra cui nome della famiglia, stato di incorporamento, angolo italico, ascendente / discendente e dati grezzi del font, su base per oggetto di pagina
Supporto annotazioni
- Tipi di annotazione - Supporto per annotazioni di testo, link, evidenziazione, sottolineatura, barrato e molti altri tipi
- Creazione di annotazioni - Crea nuove annotazioni a livello programmatico
- Modifica di annotazioni - Modifica le proprietà delle annotazioni esistenti, tra cui colore, trasparenza e contenuto
- Annotazioni di collegamento - Gestisce link interni ed esterni con supporto per le azioni
Supporto moduli
- Accessor di compilazione moduli vocale - FocusedFormFieldValue, FocusedFormFieldName e FocusedFormFieldDetails su TPdf e TPdfView espongono valore, nome e TPdfFormFieldInfo del campo logico corrente per la compilazione dei moduli da tastiera o voce
- Tipi di modulo - Supporto per moduli AcroForm e XFA
- Compilazione moduli - Compilazione interattiva con supporto JavaScript
- Selezione DLL V8 - Imposta
EnableV8Engineprima del caricamento per utilizzarepdfium.v8.dlldalla cartellaDLLs\Win32oDLLs\Win64corrispondente e interroga la disponibilità degli helper V8/XFA tramiteV8FeaturesAvailable,XfaBStrHelpersAvailableeGetRecommendedV8Flags- Accesso ai campi - Legge e scrive i valori dei campi del modulo per indice o posizione
- Informazioni sui campi - Accede a tipo di campo, flag, nome e altre proprietà
- Flag dei campi - Aggiorna i flag dei campi AcroForm per indice o posizione tramite
SetFormFieldFlags/SetFormFieldFlagsAt, incluse le flag di sola lettura, obbligatorio, password e selezione multipla- Appiattimento dei moduli -
GenerateFormAppearancesrigenera lo stream di aspetto /AP per ogni widget di modulo su ogni pagina, eFlattenPage/FlattenAllPagesconsolidano annotazioni e campi di modulo nel contenuto statico della pagina (non modificabile)- Selezione del testo dei widget di modulo, appunti e Undo / Redo - Sul widget AcroForm focalizzato la view espone
GetSelectedFormText,CopySelectedFormTextToClipboard,CutSelectedFormTextToClipboard,PasteFormTextFromClipboard,SelectAllFormTexteFormUndo/FormRedo/FormCanUndo/FormCanRedo. L'editor gestisceCtrl+A,Ctrl+C,Ctrl+Insert,Ctrl+X,Shift+Delete,Ctrl+VeShift+Insert; taglia e incolla rifiutano i campi di sola lettura o le sessioni senza permesso di compilazione o modifica dei moduli- Transazioni di modifica del documento e Undo / Redo -
BeginEditTransaction,CommitEditTransactioneRollbackEditTransactionraggruppano modifiche arbitrarie a pagine, oggetti, annotazioni, allegati e metadati, mentreUndoEdit,RedoEdite i diari di modifica portatili usano delta bidirezionali delimitati verificati con SHA-256- Recupero dopo arresto anomalo e autosave guidato dai commit - I pacchetti di recupero con checksum vincolano le impronte di sorgente e di recupero a un diario di modifica delimitato, mentre l'autosave atomico aggiorna un sidecar esplicito dopo commit, undo o redo senza riscrivere il PDF sorgente
Operazioni sulle immagini
- Estrazione immagini - Estrae bitmap dalle pagine PDF con la proprietà indicizzata
Bitmap; iterare suBitmapCountper salvare ogni immagine su disco- Inserimento JPEG -
AddJpegImageaccetta un TStream di byte JPEG grezzi e incorpora l'immagine come XObject /DCTDecode senza ricodifica- Supporto Picture -
AddPictureaccetta un oggettoTPicturecon conversione automatica del formato tramite le classi grafiche VCL/LCL registrate- Inserimento diretto di immagini -
AddImage(FileName)riconosce qualunque formato registrato con le unità grafiche VCL o LCL (BMP, PNG tramite PngImage, JPG, ...) e condivide la pipeline di AddPicture.AddImage(TBitmap)salta l'intermediario TPicture, semplificando i chiamanti che già dispongono di un TBitmap da rendering o da generazione batch- Profilo ICC dell'immagine - Gli oggetti pagina immagine espongono i propri dati del profilo ICC incorporato quando presenti (binding per
FPDFImageObj_GetIccProfileDataDecoded)- Generazione miniature - Genera bitmap di miniatura della pagina tramite la proprietà
Thumbnailoppure renderizza qualsiasi pagina a base uno tramiteTPdf.RenderPageThumbnailsenza cambiarePageNumber, con un LRU sensibile alle revisioni delimitato da tetelli sul numero di voci e sui byte dei pixel- Cache delle scene di pagina analizzate -
TPdf.RenderPageByIndex,RenderPageThumbnaileExtractThumbnailriutilizzano scene di pagina PDFium in cache LRU delimitata, mentre le modifiche alle pagine, i cambiamenti dell'albero delle pagine, lo stato dei moduli e lo smontaggio del documento invalidano le voci obsolete
Unità di supporto
- Infrastruttura asincrona -
FPdfAsynccombina l'annullamento cooperativo strutturato con callback rimovibili e sorgenti di scadenza, dispatch configurabile dei risultatiTPdfFuture<T>e unTPdfAsyncExecutorriutilizzabile con worker fissi, quattro code di priorità FIFO, backpressure a coda delimitata, handle per attività, diagnostiche dei tempi, statistiche aggregate e arresto controllato- Adattatore di stream -
TPdfStreamAdaptercollega unTStreamPascal alle callbackFPDF_FILEACCESSdi PDFium in modo cheLoadCustomDocumentlegga i blocchi su richiesta invece di bufferizzare l'intero PDF in memoria- Sessioni di download progressivo -
TPdfProgressiveDocumentmantiene vivo il provider nativo di disponibilità di PDFium, alimenta gli hint di documento, modulo e pagina inTPdfRangeRequestScheduler, fonde gli intervalli mancanti, dà precedenza ai byte critici della pagina sui trasferimenti in background, delimita le dimensioni delle richieste e i tentativi, annulla i trasporti ridondanti e apre una pagina linearizzata prima che arrivi il PDF completo- Ispezione delimitata degli stream -
TPdfStreamInspectorinventaria gli oggetti stream fisici, espone finestre raw sicure e la decodifica ordinata dei filtri generali, riporta i percorsi di accesso nativo per immagini e allegati e fa rispettare budget su sorgente, output, dizionario, conteggio e rapporto di espansione- Normalizzazione dei content stream -
TPdf.SaveAsNormalizedContenttokenizza il contenuto logico delle pagine, rimuove i commenti, valida lo stato e il bilanciamento dei contenitori, preserva gli operatori non supportati e i dati delle immagini inline e fonde gli array/Contentssicuri- Output Fast Web View -
TPdf.SaveAsLinearizedscrive gli oggetti della prima pagina prima delle pagine successive, emette due sezioni di riferimenti incrociati e costruisce le tabelle di hint degli offset di pagina e degli oggetti condivisi così che un client HTTP Range possa aprire la pagina richiesta senza scaricare il file completo- Output object stream -
TPdf.SaveAsObjectStreamimpacchetta i valori idonei in gruppi ObjStm PDF 1.5+ delimitati, mantiene diretti gli oggetti critici per l'apertura e scrive voci xref di tipo 2 adattive per file più piccoli senza sacrificare l'accesso casuale- Salvataggio incrementale a oggetti modificati -
TPdf.BeginIncrementalSaveeCommitIncrementalSaveconfrontano istantanee semantiche stabili, preservano ogni byte precedente cifrato o non cifrato, ereditano i parametri di sicurezza R5, R6 o R7, aggiungono solo gli oggetti modificati, riaprono rigorosamente ogni risultato e usano un file laterale durevole più la sostituzione atomica per i commit su file- Controllo dei contenuti opzionali -
TPdf.InspectOptionalContentinventaria livelli, configurazioni, metadati di utilizzo, gruppi radio, ordine, blocchi, policy OCMD ed espressioni di visibilità, mentreSaveAsOptionalContentConfiguredscrive stati dei livelli deterministici che PDFium applica attraverso il suo contesto di rendering nativo- Archivio di lavoro delimitato -
TPdfRandomAccessStoremantiene in memoria i dati piccoli, trabocca una sola volta su un file temporaneo privato eliminato alla chiusura a una soglia scelta dal chiamante e fornisce letture posizionali senza cambiare il cursore condiviso;TPdf.SaveMemoryLimitapplica la stessa policy alla post-elaborazione del salvataggio principale, mentre gli aggiornamenti predefiniti del catalogo open-action e delle etichette di pagina usano finestre a dimensione fissa e un indice sparso lazy degli oggetti- Interrogazione nativa della versione -
TPdf.PdfVersionriutilizza lo stato del parser diFPDF_GetFileVersionper la semantica di intestazione e catalogo, con una guardia a otto byte dell'intestazione per rifiutare declassamenti malformati del catalogo- Toolkit di geometria a matrici -
FPdfMatrixincapsulaFS_MATRIXdi PDFium con composizione post e pre, trasformazioni consapevoli del pivot, adattamento di rettangoli stretch / contain / cover, diagnostiche di invertibilità sensibili alla scala, scomposizione, helper di inversione non mutanti, mappatura di vettori e quadrilateri, batch di punti o rettangoli con una sola allocazione, varianti in place e bounds trasformati in una sola passata- Rendering progressivo annullabile -
TPdf.RenderPageProgressivepilota il loopFPDF_RenderPageBitmap_Start+RenderPage_Continuedi PDFium e interroga unIPdfCancellationTokentra le iterazioni tramite la callbackIFSDK_PAUSE, in modo che i rendering lunghi ad alta DPI possano interrompersi a metà pagina invece di bloccarsi fino al completamento. Restituisce unTPdfProgressiveStatustraprsDone,prsCancelledoprsFailed- Percorso di rendering a zero copia -
RenderPage/RenderTile/RenderPageProgressivescrivono l'output di PDFium direttamente nel buffer DIB delTBitmapdi destinazione invece di passare per un buffer interno, risparmiando una copia di memoria di width × height × 4 byte per rendering — più evidente alle DPI elevate (pannelli di miniature, esportazione in qualità di stampa, esportazione batch). Un percorso di ripiego per riga di scansione viene mantenuto quando il DIB di destinazione non può essere incapsulato in modo sicuro- Trasformazioni bitmap per ipovisione - InvertPdfBitmap, GrayscalePdfBitmap e DuotonePdfBitmap trasformano sul posto i pixel TBitmap a 32 bit renderizzati per viste invertite, in scala di grigi o bicolore per ipovisione
- Visualizzazione ipovisione in tempo reale -
TPdfView.OptionssupportareInvertereNightDuotone, conNightDuotoneInkeNightDuotonePaperche controllano la palette notturna live prima che gli overlay vengano dipinti
Operazioni di disegno
- Disegno di tracciati - Crea tracciati con linee, curve di Bezier e forme chiuse
- Rimozione di oggetti - Rimuove oggetti di pagina e rigenera il contenuto della pagina da TPdf o TPdfView
- Riempimento e contorno - Configura modalità di riempimento, colori, trasparenza e proprietà del contorno
- Modalità di fusione - Supporto per varie modalità di fusione PDF
- Stili di linea - Configura terminazione linea, congiunzione linea e larghezza del contorno
Firme digitali
- Rilevamento firme - Rileva ed enumera firme digitali nei documenti PDF
- Informazioni firma - Accede a contenuto, byte range, sub-filter, motivazione e ora della firma
- Permessi MDP - Interroga i permessi di rilevamento e prevenzione delle modifiche del documento
- Analisi delle revisioni post-firma -
AnalyzeSignatureRevisionsclassifica le modifiche incrementali ai byte originali rispetto a DocMDP e FieldMDP, identifica gli aggiornamenti del materiale di validazione e riporta definizioni shadow o oggetti compressi irrisolti senza risalvare il documento- Profili a curve ellittiche PDF 2.0 - La validazione PAdES identifica firme NIST, Brainpool, Ed25519 ed Ed448, controlla la congruenza curva-digest e i parametri AlgorithmIdentifier, e riporta la crittografia nativa non supportata indipendentemente dalle combinazioni non valide
Supporto allegati
- Accesso allegati - Legge, crea, modifica ed elimina allegati di file incorporati
- Estrazione batch delimitata -
ReadAttachmentMetadatainventaria gli allegati una sola volta eExtractAttachmentsToStreamsscrive un payload decodificato alla volta sotto controlli per file, aggregati, chunk e annullamento- Nomi allegati - Accede ai nomi file degli allegati
- Tipi di allegato - Legge i valori MIME subtype dei file incorporati quando presenti
- Segnalibri - Naviga i segnalibri del documento con supporto gerarchico tramite l'array
Bookmarkse gli helper di attraversamentoBookmarkChildren,HasBookmarkChildreneBookmarkFrom- Destinazioni con nome - Accede alle destinazioni con nome per indice o nome tramite
Destination,DestinationByNameeDestinationCount- Etichette di pagina - Recupera le etichette di pagina per ciascuna pagina tramite
PageLabel; utile quando i documenti utilizzano numeri romani per la parte introduttiva- Link web - Rileva e naviga i link web nelle pagine con
WebLink,WebLinkCounteTPdfView.WebLinkAtPos- Annotazioni di collegamento - Accede alle annotazioni di collegamento con informazioni su azione e destinazione tramite
LinkAnnotation,LinkAnnotationCounteTPdfView.LinkAnnotationAtPos- Gestione sicura del clic sui link - TPdfView solleva gli eventi
OnAnnotationLinkClick/OnWebLinkClickprima della gestione automatica goto / URI, con le azioni di avvio disabilitate per default. Il rilevamento del clic sui link viene eseguito solo quando il gesto è un clic anziché un trascinamento, utilizzando un nuovo ancoraggio MouseDown in modo che i gesti di panoramica continuino a passare attraverso il percorso di scorrimento esistente senza modifiche
Rendering
- Rendering di alta qualità - Renderizza le pagine in un device context, una bitmap o un tile tramite
RenderPage/RenderTile, con scritture dirette a zero copia nel buffer DIB di destinazione- Rendering progressivo annullabile -
RenderPageProgressivepilota il loop progressivo di PDFium e interroga unIPdfCancellationTokentra le iterazioni, restituendoprsDone,prsCancelledoprsFailed. La bitmap conserva il lavoro parziale svolto fino al momento dell'annullamento- Rendering parallelo delle pagine -
RenderPagesParallelacquisisce una sola volta il documento corrente, fornisce a ogni worker un modulo PDFium e un documento caricati indipendentemente, preserva l'ordine delle richieste e delimita la memoria dell'output trattenuto per pagina e aggregata- Censura sicura dei contenuti -
SaveAsRedactedapplica i rettangoli/Redacta un'istantanea isolata, rimuove in modo conservativo gli oggetti di pagina di primo livello che si intersecano e le annotazioni sovrapposte, dipinge sostituzioni opache, rimuove gli allegati incorporati e scrive un risultato sanificato a revisione singola senza modificare il documento caricato- Opzioni di rendering - Ottimizzazione del testo LCD (
reLcd), annotazioni (reAnnotations), flag per scala di grigi e modalità di stampa- Hook Skia - I binding di basso livello
FPDF_RenderPageSkiaeFPDF_FFLDrawSkiasono disponibili quando i chiamanti forniscono uno SkCanvas esterno (dipende dagli export della DLL inclusa)- Selezione modalità di stampa - Imposta le modalità di stampa PDFium EMF, solo testo, PostScript, pass-through, image-mask e Type 42 tramite
SetPdfPrintModeconTPdfPrintMode- Overlay asincrono - TPdfView può visualizzare un overlay di caricamento opzionale mentre worker di proprietà dell'applicazione effettuano il rendering con istanze TPdf separate
- Rotazione pagina - Supporto per rotazione di 0, 90, 180 e 270 gradi (
ro0,ro90,ro180,ro270)- Rilevamento trasparenza - La proprietà
Transparentriporta se qualsiasi oggetto nella pagina corrente presenta trasparenza, incluse modalità di fusione e alpha parziale
Visualizzazione (TPdfView)
- Modalità di visualizzazione -
dmSingleContinuous,dmTwoPageContinuousedmTwoPageContinuousWithCover(la pagina di copertina sta da sola, poi si prosegue con doppie pagine). L'helper a livello di unitàComputeSpreadPagesespone il calcolo delle pagine degli spread senza istanziare un visualizzatore- Modalità di adattamento -
FitModesceglie come la pagina si dispone nel viewport:pfmNone(zoom manuale),pfmActualSize(100%),pfmFitPage(la pagina intera entra nel viewport),pfmFitWidth(la larghezza della pagina corrisponde alla larghezza del viewport) epfmFitHeight(l'altezza della pagina corrisponde all'altezza del viewport). La modalità di adattamento attiva viene riapplicata automaticamente al Resize e quando la pagina corrente cambia; impostare Zoom direttamente annulla la modalità di adattamento attiva (FitMode torna apfmNone), seguendo la convenzione dei visualizzatori PDF standard- Controllo zoom - Zoom variabile con gli helper per pagina
PageZoom,PageWidthZoom,PageHeightZoomeActualSizeZoom- Colore pagina -
PageColordisaccoppia lo sfondo della pagina PDF renderizzata dalColordel controllo circostante. Il valore predefinito èclWhite, quindi le pagine PDF ora vengono rese bianche-carta indipendentemente dal tema dell'applicazione host. I visualizzatori in modalità scura possono mantenere l'area di scorrimento scura lasciando la pagina PDF effettiva bianca (o di qualsiasi colore scelto dall'applicazione)- Selezione testo interattiva - Selezione del testo da parte dell'utente tramite trascinamento sulle pagine PDF, con commutazione automatica dell'hit-test tra selezione e panoramica: cliccare su un carattere avvia una selezione tramite trascinamento, cliccare su uno spazio vuoto effettua la panoramica. Il doppio clic seleziona la parola, il triplo clic seleziona la riga,
Ctrl+Aseleziona la pagina (entrambe le pagine in modalità spread),Ctrl+Ccopia comeCF_UNICODETEXT,Shift+arrowsestende la selezione, passando con il mouse sul testo il cursore diventacrIBeam, e il trascinamento verso un bordo del visualizzatore fa scorrere automaticamente la pagina. Nuove proprietà pubblicateSelectionColoreOnSelectionChange; nuove proprietà pubblicheHasSelection,SelectedText,SelectionCharCount,ClearSelection,SelectAll,CopySelectionToClipboard. Le modalità di visualizzazione a doppia pagina selezionano attraverso entrambe le pagine visibili unite con CR/LF. Un popup Copia predefinito con tasto destro viene allegato automaticamente quando l'host non ha assegnato un proprioPopupMenu. Vincolato dal flagAllowUserTextSelectiondella v1.17.0 per gli host in modalità chiosco- Mappatura coordinate - Conversione tra le coordinate del dispositivo del visualizzatore e le coordinate della pagina PDF con
DeviceToPage/PageToDevice, compresi overload che accettano unTRecte restituiscono unTPdfRectangle- Selezione testo e hit testing - Risolve i caratteri sotto i punti del visualizzatore con
CharacterIndexAtPose dipinge le evidenziazioni di selezione del testo tramitePaintSelection- Mouse e tastiera - Pieno supporto per dispositivi di input con scorrimento tramite trascinamento del mouse, scorciatoie PgUp / PgDn / Ctrl+Home / Ctrl+End e navigazione di pagina con rotella su / giù. Ctrl+rotella è riservato allo zoom dell'applicazione e viene saltato dal gestore di navigazione
- Blocco dell'input utente -
AllowUserPageChangecontrolla le scorciatoie di pagina della tastiera,ChangePageOnMouseScrollingcontrolla i salti di pagina con la rotella, eAllowUserTextSelectioncontrolla l'input di selezione del testo da mouse / tastiera. Tutti e tre sono True per default; impostarli a False per bloccare chioschi, riquadri di anteprima o integrazioni di sola lettura senza sottoclassare- Overlay di rendering asincrono -
AsyncRendering,LoadingTexteLoadingColordisegnano un piccolo indicatore "Caricamento..." sopra la pagina renderizzata in modo che le applicazioni che usano un proprio worker per rendering lunghi condividano la stessa affordance visiva. I valori predefiniti preservano il comportamento esistente.TPdfora serializza le chiamate di rendering e di scaricamento pagina per istanza; le applicazioni continuano a possedere il dispatch dei worker e devono evitare di mutare un documento mentre un rendering è in corso- Gestione sicura del clic sui link -
LinkOptionsè un insieme pubblicato che controlla il comportamento automatico per i quattro tipi di azione dei link PDF:loAutoGoto(salto di pagina),loAutoOpenURI(ShellExecute),loAutoLaunch(ShellExecute) eloAutoEmbeddedGoto(riservato). I valori predefiniti abilitano sololoAutoGotoeloAutoOpenURI;loAutoLauncheloAutoEmbeddedGotorestano disattivati in modo che un clic accidentale non possa eseguire un programma arbitrario.OnAnnotationLinkClickeOnWebLinkClicksi attivano prima di qualsiasi azione automatica e permettono all'applicazione di contrassegnare l'evento come Handled o di reindirizzarlo- Interazione con i moduli - Modifica interattiva dei moduli all'interno del visualizzatore, oltre agli helper di selezione / Undo / Redo della v1.23.0
- Stile visivo -
PageShadowSize,PageShadowColorePageBorderColordipingono un'ombra opzionale sotto il rettangolo della pagina e un bordo di un pixel attorno ad esso;SmoothScrollora anima i comandi della barra di scorrimento per riga/pagina in segmenti pilotati da timer mentre il trascinamento del cursore resta immediato- Navigazione tramite miniature -
TPdfThumbnailView(unitàFPdfThumbnail) renderizza una miniatura di pagina per riga in un pannello laterale scorrevole con evidenziazione di hover e selezione, oltre alla navigazione clic-per-andare. Progettato per stare accanto a un TPdfView. Proprietà:CurrentPageIndex,ThumbnailWidth,ThumbnailHeight,TextColor,HoverColor,SelectionColor,BorderColor; evento:OnPageClick
Compressione
- Compressione automatica - Quando la proprietà
Compressedè True (predefinito), tutti gli stream PDF vengono assicurati compressi con FlateDecode al salvataggio- Post-elaborazione - Il motore di compressione scansiona i dati PDF salvati e comprime qualsiasi stream non compresso utilizzando la massima compressione zlib
- Ricostruzione delle cross-reference - Ricostruisce automaticamente la tabella xref quando la compressione degli stream modifica gli offset in byte
- Overhead nullo - Se tutti gli stream sono già compressi, i dati passano senza modifica
Sicurezza
- Supporto password - Apre documenti PDF protetti da password
- Permessi - Legge i permessi di documento e utente; la demo
SecurityAuditcombina permessi, allegati, JavaScript del documento, link URI / Launch, firme, XFA e disponibilità V8 in una superficie di rischio di sola lettura con azioni di salvataggio del report TXT / JSON e copia TXT- Toolkit DER delimitato -
FPdfAsn1codifica numeri di tag bassi e alti, valori tipizzati, collezioni SET OF ordinate e forme canoniche di ora o stringa; le sue finestre di lettura a zero copia, i decoder tipizzati e il validatore con risorse limitate supportano flussi di lavoro CMS, PAdES, certificati e marche temporali- Validazione a lungo termine specifica della firma -
TPadesDssOptions.Vrisscrive dizionari VRI indiretti indicizzati per hash mentre i stream condivisi di certificati, OCSP e CRL sono deduplicati per hash del contenuto e la firma PAdES B-LT o B-LTA crea automaticamente il VRI della nuova firma- Firma remota e interrotta -
PreparePadesRemoteSignaturepersiste il digest SHA-256 del documento, il ByteRange esatto, le coordinate del segnaposto e l'impronta del PDF preparato per la firma HSM o cloud, mentreCompletePadesRemoteSignaturerifiuta sessioni modificate, riutilizzate, di dimensioni eccessive o con digest non corrispondente prima di scrivere l'output- Analisi delle policy di revisione della firma -
AnalyzeSignatureRevisionsricostruisce catene di revisione classiche, ibride e xref-stream, applica DocMDP e FieldMDP per firma e fallisce in modo sicuro su modifiche malformate, shadow, compresse o oltre budget- Profili di firma resistenti all'ambiguità - La validazione PAdES conta le chiavi richieste solo al livello del dizionario della firma principale, rifiuta duplicati e profili Sig o DocTimeStamp incoerenti e richiede che il ByteRange escluda esattamente il token Contents esadecimale diretto
- Esportazione delle prove multi-firma -
BuildPadesEvidenceReportcorrela i fatti di PDFium, la policy CMS, lo stato di trust e delle marche temporali, gli hash del percorso dei certificati, la copertura DSS/VRI e le decisioni di revisione con output JSON e CSV delimitato- Rinnovo delle marche temporali di archivio -
RenewPadesArchiveTimestampaccoda una Document Time-stamp RFC 3161 sopra la storia delle firme esistente, opzionalmente rinnova prima il DSS completo e valida la catena B-LTA risultante prima dell'output- Validazione asincrona del trust -
ValidatePadesTrusteValidatePadesTrustAsyncverificano firme detached sui byte originali, le catene del firmatario e della TSA, le prove di revoca online opzionali e i token di marca temporale RFC 3161 con progresso a stadi, recupero delimitato e annullamento cooperativo- Trust qualificato -
TPdfEuropeanTrustedListanalizza solo elenchi fidati ETSI autenticati dal chiamante, riautentica l'XML in cache, accetta sorgenti di aggiornamento di proprietà del chiamante e fornisce la valutazione offline dei servizi qualificati tramiteQualifiedTrustEvaluator- Rimozione sicurezza - Salva documenti con la sicurezza rimossa (quando autorizzato)
Stampa
- Modalità di stampa - Scegliere tra modalità di stampa EMF, solo testo, PostScript Level 2 / 3, PostScript pass-through, EMF image-mask e Type 42 tramite la funzione globale
SetPdfPrintMode- Preferenze visualizzatore - Espone l'intento dell'autore del documento tramite
PrintCopies,PrintPageRanges(intervalli di pagina a base uno),PrintScalingePrintPaperHandling;SetPdfPrintPaperHandlingDevModemappa il suggerimento duplex inDEVMODE.dmDuplexdi Windows- Stampa N-up - Le demo
PrintPreferencesin Delphi, C++Builder e Lazarus mostrano la composizione N-up su foglio (1 / 2 / 4 / 9 pagine per foglio) con filtro pagine dispari / pari, rendering in scala di grigi, bordi di cella opzionali da 1 pixel, preferenze di stampa dell'autore PDF e mappatura dell'intento duplex tramiteSetPdfPrintPaperHandlingDevMode
Demo incluse
Gli alberi
Demo\Delphi,Demo\CBuildereDemo\Lazarusdistribuiscono progetti di esempio eseguibili che esercitano la superficie API live nelle tre famiglie di IDE. Punti salienti:
- PDFViewer / MultiPageViewer / SplitView - Uso completo di TPdfView: caricamento, navigazione, zoom, rotazione, doppia pagina, layout con copertina e confronto PDF side-by-side in Delphi / C++Builder / Lazarus con comandi sincronizzati; le demo del visualizzatore sono anche test pratici di velocità per PDF di più gigabyte, dove documenti da 2,x GB possono raggiungere una prima vista usabile quasi immediatamente mentre il rendering delle pagine rimane reattivo
- ViewerInteractionLab - Esempi mirati di interazione con TPdfView in Delphi, C++Builder e Lazarus per modalità di visualizzazione, modalità di adattamento, colori di pagina, rotazione, evidenziazione della ricerca, selezione del testo, anteprima del testo selezionato, azioni degli appunti e feedback delle coordinate DeviceToPage
- SearchAndSelect - Esempi mirati di workflow in Delphi, Lazarus e C++Builder per l'elenco dei risultati di ricerca su tutte le pagine, navigazione precedente / successiva, salto al risultato tramite doppio clic,
HighlightSearchText, ricerca con maiuscole/minuscole / parola intera,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelectione modalità di visualizzazione a doppia pagina- PreflightReport - Gli oggetti riutilizzabili
FPdfPreflightReportraccolgono i risultati PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R e PDF/VT con stato, gravità Info / Warning / Error, lookup, ricerca, filtraggio, aggregazione deterministica, impronte SHA-256 stabili, output TXT / HTML / Markdown / JSON / CSV e formati di automazione SARIF 2.1.0 / JUnit XML / NDJSON / XML; demo in Delphi, Lazarus e C++Builder più workflow da console offrono anteprime, routing batch, riepiloghi, allegati dei report e gating del codice di uscita per la CI- ContentExtractionLab - Workflow unificato di inventario del contenuto in Delphi, Lazarus e C++Builder per metadati del documento, testo di pagina, oggetti di pagina, immagini, allegati, link, annotazioni, segnalibri e metriche di font / carattere con esportazione TXT / JSON, selezione di categoria tutto / niente, salvataggio del PDF sorgente e azioni di copia del report
- WatermarkStamp - Workflow Form XObject riutilizzabile in Delphi, Lazarus e C++Builder per filigrane centrate, timbri d'angolo ed etichette di numero di pagina su un PDF di destinazione multi-pagina
- CreatePDF - Costruisce un PDF multi-pagina da zero con testo, immagini, tracciati, tabelle e composizione di filigrana; include un'opzione "Testo Europeo" per scrivere testo accentato ceco / francese / tedesco / spagnolo / portoghese / polacco / turco e verificare la selezione del font e la gestione Unicode
- ExtractText / ExtractImages / ContentExtractionLab - Salva su disco il testo estratto (incluso l'output separato per pagina) o le immagini incorporate, oppure genera un report di inventario del contenuto multi-categoria in un'unica passata
- FormFill - Legge i metadati dei campi AcroForm, scrive valori, rigenera le apparenze /AP e salva il risultato modificabile o appiattito
- FontProperties - Ispeziona i metadati indicizzati di caratteri / font tramite TPdf e TPdfView in Delphi, C++Builder e Lazarus
- MergePDF / SplitPDF - Combina più PDF sorgenti (con selezione dell'intervallo di pagine per file, percorso di output opzionale, log di esecuzione, pulsante di annullamento e riepilogo di completamento dell'unione) o suddivide un PDF in file di output per pagina
- PDFtoJpg / BatchExport - Conversione PDF in JPG in Delphi, C++Builder e Lazarus, una tantum o multi-file in batch, con progresso generale per file, progresso corrente per pagina, input di DPI / qualità / password e batch cooperativamente annullabile basato su
IPdfCancellationToken- StandardsLab - Esempi di workflow in Delphi, C++Builder e Lazarus per validazione PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R e PDF/VT, segnalazione dei problemi e output di salvataggio orientati agli standard
- PrintPDF / PrintPreferences - Stampa PDF standard in Delphi, C++Builder e Lazarus con anteprima, intervalli di pagine, copie, fascicolazione, progresso e annullamento (PrintPDF), oltre alla composizione N-up su foglio in Delphi, C++Builder e Lazarus con filtro dispari / pari e preferenze di stampa dell'autore PDF (PrintPreferences)
- SecurityAudit - Esempi di superficie di rischio in sola lettura in Delphi, C++Builder e Lazarus per permessi, allegati, azioni JavaScript, link URI / Launch, link web, firme, stato XFA, disponibilità degli helper V8 / XFA e report di audit TXT / JSON
- Attachment - Crea PDF, aggiunge / elenca / estrae / elimina / salva allegati di file incorporati con visualizzazione del MIME subtype
- ImageToPDF - Conversione batch di immagini in un singolo PDF in Delphi, C++Builder e Lazarus, una immagine per pagina, con anteprima e progresso per immagine
Le suite di regressione in Delphi, C++Builder e Lazarus coprono 147 casi (Pas) / 123 (C++) condividendo gli stessi PDF di test in modo che il comportamento resti allineato al byte nelle tre famiglie di IDE
Supporto piattaforma
- Delphi - Delphi XE5 (RAD Studio XE5) fino a Delphi 13.1 Florence (RAD Studio 13.1)
- C++Builder - C++Builder XE5 (RAD Studio XE5) fino a C++Builder 13.1 Florence
- Lazarus - Supporto Free Pascal / Lazarus
- Win32 / Win64 - Piattaforme Windows a 32 bit e 64 bit
Il confronto con allineamento identifica pagine inserite, eliminate e spostate con modifiche Unicode entro limiti e più regioni visive; gli overlay rendono esportabili queste differenze
L'unione transazionale della navigazione mantiene gerarchia degli outline, stili, azioni URI e destinazioni di pagina rimappate nelle importazioni selezionate e riordinate
L'OCR Tesseract opzionale aggiunge testo ricercabile alle pagine scansionate, con diagnostica esplicita delle dipendenze, annullamento e limiti di risorse
L'unione transazionale AcroForm di pagine selezionate supporta politiche esplicite sui nomi e isolamento delle risorse; il provider opzionale di codici a barre genera Code128, QR, DataMatrix e PDF417 e riconosce immagini in scala di grigi