PDFium Component Docs

LoadDocument policies and repaired output

Component: TPdf  ·  Unit: PDFium
Open een PDF met compatible-, strict- of recovery-beleid en schrijf optioneel een onafhankelijk geverifieerde gerepareerde kopie weg

Syntax

procedure LoadDocument;

 

procedure LoadDocument(Data: Pointer; Size: NativeUInt; Buffered: Boolean = True);

DataPointer. Een verwijzing naar de rauwe PDF-gegevens in het geheugen.
SizeNativeUInt. De grootte van de databuffer in bytes.
BufferedBoolean. Bij True (standaard) bewaart TPdf een eigen kopie. Bij False moet de buffer geldig blijven tot het document wordt gelost.

 

procedure LoadDocument(const Data: TBytes; Buffered: Boolean = True);

DataTBytes. De inhoud van het PDF-bestand als byte-array.
BufferedBoolean. Bij True (standaard) bewaart TPdf een eigen kopie. Bij False moet de byte-array geldig en ongewijzigd blijven tot het document wordt gelost.

 

procedure LoadDocument(const Data: TBytes; Index, Count: Integer; Buffered: Boolean = True);

DataTBytes. De onderliggende byte-array die het PDF-venster bevat.
IndexInteger. De op nul gebaseerde offset van de eerste PDF-byte.
CountInteger. Het aantal te laden PDF-bytes.
BufferedBoolean. Bij True (standaard) kopieert TPdf alleen het geselecteerde venster. Bij False moet de onderliggende byte-array geldig en ongewijzigd blijven tot het document wordt gelost.

 

procedure LoadDocument(Data: TMemoryStream; Buffered: Boolean = True);

DataTMemoryStream. Een TMemoryStream met de PDF-gegevens.
BufferedBoolean. Bij True (standaard) bewaart TPdf een eigen kopie. Bij False moet het streamgeheugen geldig blijven tot het document wordt gelost.

 

procedure LoadDocument(const Options: TPdfLoadOptions; out Report: TPdfLoadReport);

procedure LoadDocument(Data: Pointer; Size: NativeUInt; const Options: TPdfLoadOptions; out Report: TPdfLoadReport; Buffered: Boolean = True);

procedure LoadDocument(const Data: TBytes; const Options: TPdfLoadOptions; out Report: TPdfLoadReport; Buffered: Boolean = True);

procedure LoadDocument(const Data: TBytes; Index, Count: Integer; const Options: TPdfLoadOptions; out Report: TPdfLoadReport; Buffered: Boolean = True);

 

function SaveAsRepaired(Stream: TStream; out Report: TPdfRepairReport; AllowSignedDocument: Boolean = False): Boolean;

function SaveAsRepaired(const FileName: string; out Report: TPdfRepairReport; AllowSignedDocument: Boolean = False): Boolean;

Description

De oudere overloads gebruiken de compatibele modus en behouden hun bestaande gedrag, terwijl ze de native xref-geldigheid en herstelstatus publiceren via LastLoadReport. De overload zonder argumenten leest uit het pad dat in FileName is opgeslagen. De Pointer-, TBytes- en TMemoryStream-overloads laden rechtstreeks vanuit gegevens in het geheugen en omzeilen het bestandssysteem. De overload met bytebereik selecteert een ingebedde PDF uit een grotere container, een protocolframe of een herbruikbare ontvangstbuffer zonder een tijdelijke TBytes-slice aan te maken.

Wanneer Buffered True is (standaard), kopieert TPdf de aangeleverde bytes naar zijn eigen bewaarde buffer. Bij False moet de buffer van de aanroeper geldig en ongewijzigd blijven tot UnloadDocument of Active := False — dit bespaart een extra kopie maar vereist zorgvuldig beheer van de levensduur.

De overload met bytebereik wijst negatieve waarden af, een Index voorbij de datalengte of een Count die uitsteekt voorbij de resterende bytes. De pointer-overload wijst nil af wanneer Size ongelijk is aan nul; de TMemoryStream-overload wijst een nil-stream af voordat enige documentstatus verandert

Bij succes wordt Active True en spiegelen alle pagina-eigenschappen de eerste pagina (PageNumber = 1). Bij mislukking wordt een EPdfError-exceptie opgeworpen.

Load policies

TPdfLoadOptions.Default levert begrensde standaardwaarden voor bronbytes, bevindingen, xref-secties, xref-entries en objectnummers. PDFium blijft in elke modus de semantische parser; de audit in de wrapper bestaat omdat de publieke PDFium-ABI xref-geldigheid rapporteert maar geen schakelaar blootstelt die parser-herstel uitschakelt

De audit volgt klassieke xref-tabellen, xref-streams, hybride revisies en /Prev-ketens. Hij rapporteert misvormde secties, cycli, conflicterende entries, beschadigde objectoffsets, ontbrekende eindmarkeringen, niet-ondersteunde streamfilters, budgetuitputting en natief herstel. Het overschrijden van een geconfigureerd auditbudget zet AuditComplete op False en levert een waarschuwing op; er wordt daarmee op zichzelf niet geclaimd dat niet-gecontroleerde bytes ongeldig zijn

InspectAvailability blijft de lichtgewicht native beschikbaarheidsprobe voor linearisatie en page-first laden; het vervangt het structurele laadrapport niet

Reports

TPdfLoadReport omvat Status, CrossReferenceTableValid, UsedRecovery, RecoveryRoute, bron- en structurele offsets, sectie- en entrytellers, conflict- en schadetellers, bevindingtotalen, truncatiestatus en een getypeerde Issues-array. Hetzelfde rapport wordt bewaard in LastLoadReport

TPdfRepairReport registreert of de bron herstel gebruikte, de uitvoergrootte en het aantal pagina's, de xref-geldigheid van de uitvoer, de terminale fouttekst en het volledige onafhankelijke verificatierapport van de strict-load

Repaired output

SaveAsRepaired laat PDFium een volledige niet-incrementele kopie schrijven en opent die uitvoer vervolgens in een geïsoleerde TPdf met plmStrict. De methode levert bytes pas nadat de xref-geldigheid en de consistentie van het aantal pagina's slagen. De bestandsoverload schrijft via een tijdelijk bestand in dezelfde map en vervangt de bestemming atomair

Een volledige herschrijving verwijdert eerdere incrementele geschiedenis en maakt bestaande bytebereiken van handtekeningen ongeldig. Getekende documenten worden afgewezen, tenzij AllowSignedDocument expliciet True is. De methode herstelt structuren die PDFium succesvol kan laden en herschrijven; herstel van willekeurig beschadigde inhoud of behoud van digitale handtekeningen wordt niet gegarandeerd

Example

// From file
Pdf.FileName := 'C:\docs\file.pdf';
Pdf.LoadDocument;

// From TBytes
var Bytes: TBytes;
Bytes := TFile.ReadAllBytes('file.pdf');
Pdf.LoadDocument(Bytes);

// From a PDF embedded in a larger byte array
Pdf.LoadDocument(Container, PdfOffset, PdfLength);

// From TMemoryStream (unbuffered)
Pdf.LoadDocument(FStream, False);

// Reject hidden parser recovery
Options := TPdfLoadOptions.Default(plmStrict);
Pdf.LoadDocument(Options, Report);

// Rewrite and independently verify a recovered document
Pdf.SaveAsRepaired('C:\docs\repaired.pdf', RepairReport);

See Also

Active, FileName, LoadCustomDocument, SaveAs