PDFium Delphi Component Docs

LoadDocument-policy och reparerad utmatning

Component: TPdf  ·  Unit: PDFium
Öppna en PDF med policyn compatible, strict eller recovery och skriv vid behov en oberoende verifierad reparerad kopia

Syntax

procedure LoadDocument;

 

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

DataPointer. En pekare till rå PDF-data i minnet
SizeNativeUInt. Storleken på databufferten i byte
BufferedBoolean. När True (standard) behåller TPdf en egen kopia. När False måste bufferten förbli giltig tills dokumentet lastas ur

 

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

DataTBytes. PDF-filens innehåll som en byte-array
BufferedBoolean. När True (standard) behåller TPdf en egen kopia. När False måste byte-arrayen förbli giltig och oförändrad tills dokumentet lastas ur

 

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

DataTBytes. Underliggande byte-array som innehåller PDF-fönstret
IndexInteger. Den nollbaserade positionen för första PDF-byten
CountInteger. Antalet PDF-byten som ska läsas in
BufferedBoolean. När True (standard) kopierar TPdf endast det valda fönstret. När False måste den underliggande byte-arrayen förbli giltig och oförändrad tills dokumentet lastas ur

 

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

DataTMemoryStream. En TMemoryStream som innehåller PDF-datan
BufferedBoolean. När True (standard) behåller TPdf en egen kopia. När False måste strömminnet förbli giltigt tills dokumentet lastas ur

 

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 äldre överlagringarna använder compatible-läget och bevarar sitt befintliga beteende samtidigt som de publicerar nativ xref-giltighet och återställningsstatus via LastLoadReport. Överlagringen utan argument läser från sökvägen som lagras i FileName. Överlagringarna för Pointer, TBytes och TMemoryStream läser in direkt från data i minnet och kringgår filsystemet. Byte-intervallöverlagringen väljer en inbäddad PDF från en större container, protokollram eller återanvändbar mottagningsbuffert utan att skapa en tillfällig TBytes-slice

När Buffered är True (standard) kopierar TPdf de angivna bytena till sin behållna buffert. När False måste anroparens buffert förbli giltig och oförändrad tills UnloadDocument eller Active := False — detta undviker en extra kopia men kräver noggrant livstidshanterande

Byte-intervallöverlagringen förkastar negativa värden, ett Index bortom datalängden eller ett Count som sträcker sig förbi de återstående bytena. Pekaröverlagringen förkastar nil när Size inte är noll; TMemoryStream-överlagringen förkastar en nil-ström innan någon dokumenttillstånd ändras

Vid lyckat resultat blir Active True och alla sidegenskaper speglar första sidan (PageNumber = 1). Vid misslyckande väcks ett EPdfError-undantag

Load policies

TPdfLoadOptions.Default tillhandahåller begränsade standardvärden för källbyten, problem, xref-sektioner, xref-poster och objektnummer. PDFium förblir den semantiska tolkaren i varje läge; omslagsgranskningen finns eftersom det publika PDFium-ABI:et rapporterar xref-giltighet men inte exponerar någon brytare som stänger av tolkarens återställning

Granskningen följer klassiska xref-tabeller, xref-strömmar, hybridrevisioner och /Prev-kedjor. Den rapporterar felformaterade sektioner, cykler, motstridiga poster, skadade objektpositioner, saknade slutmarkörer, strömningsfilter som inte stöds, slut på budget och nativ återställning. Att en konfigurerad granskningsbudget överskrids sätter AuditComplete till False och ger en varning; det påstår inte i sig att okontrollerade byte är ogiltiga

InspectAvailability förblir den lättnativa tillgänglighetssonden för linearisering och page-first-inläsning; den ersätter inte den strukturella inläsningsrapporten

Reports

TPdfLoadReport innehåller Status, CrossReferenceTableValid, UsedRecovery, RecoveryRoute, käll- och strukturella positioner, sektions- och posträknare, räknare för konflikter och skador, problemtotaler, trunkeringstillstånd och en typad Issues-array. Samma rapport lagras i LastLoadReport

TPdfRepairReport registrerar huruvida källan använde återställning, utdatastorlek och sidantal, utdata-xref-giltighet, avslutande feltext och den fullständiga oberoende verifieringsrapporten från strict-inläsningen

Repaired output

SaveAsRepaired ber PDFium skriva en komplett icke-inkrementell kopia och öppnar sedan den utdatan i en isolerad TPdf med plmStrict. Metoden levererar byte först efter att xref-giltighet och sidantalskonsistens passerar. Filöverlagringen skriver via en tillfällig fil i samma katalog och ersätter målet atomärt

En fullständig omskrivning tar bort tidigare inkrementell historik och ogiltigförklarar befintliga signaturbyteintervall. Signerade dokument förkastas om inte AllowSignedDocument uttryckligen är True. Metoden reparerar strukturer som PDFium kan läsa in och skriva om framgångsrikt; den garanterar inte återställning av godtyckligt skadat innehåll eller bevarande av digitala signaturer

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