PDFium Delphi Component Docs

LoadDocument policies and repaired output

Komponenta: TPdf  ·  Jedinica: PDFium
Otvara PDF s kompatibilnom, strogom ili politikom oporavka i neobavezno zapisuje neovisno provjerenu popravljenu kopiju

Sintaksa

procedure LoadDocument;

 

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

DataPointer. Pokazivač na sirove PDF podatke u memoriji
SizeNativeUInt. Veličina međuspremnika podataka u bajtovima
BufferedBoolean. Kada je True (zadano), TPdf zadržava vlastitu kopiju. Kada je False, međuspremnik mora ostati valjan dok se dokument ne ukloni

 

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

DataTBytes. Sadržaj PDF datoteke kao niz bajtova
BufferedBoolean. Kada je True (zadano), TPdf zadržava vlastitu kopiju. Kada je False, niz bajtova mora ostati valjan i nepromijenjen dok se dokument ne ukloni

 

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

DataTBytes. Pozadinski niz bajtova koji sadrži PDF prozor
IndexInteger. Nultiindeksirani pomak prvog PDF bajta
CountInteger. Broj PDF bajtova za učitavanje
BufferedBoolean. Kada je True (zadano), TPdf kopira samo odabrani prozor. Kada je False, pozadinski niz bajtova mora ostati valjan i nepromijenjen dok se dokument ne ukloni

 

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

DataTMemoryStream. TMemoryStream koji sadrži PDF podatke
BufferedBoolean. Kada je True (zadano), TPdf zadržava vlastitu kopiju. Kada je False, memorija strujanja mora ostati valjana dok se dokument ne ukloni

 

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;

Opis

Naslijeđena preopterećenja koriste kompatibilni režim i čuvaju postojeće ponašanje uz objavljivanje izvorne valjanosti xref-a i statusa oporavka kroz LastLoadReport. Preopterećenje bez argumenata čita iz putanje pohranjene u FileName. Preopterećenja Pointer, TBytes i TMemoryStream učitavaju izravno iz podataka u memoriji, zaobilazeći datotečni sustav. Preopterećenje raspona bajtova bira ugrađeni PDF iz većeg spremnika, okvira protokola ili ponovno upotrebljivog prijamnog međuspremnika bez stvaranja privremenog isječka TBytes

Kada je Buffered True (zadano), TPdf kopira dostavljene bajtove u svoj zadržani međuspremnik. Kada je False, međuspremnik pozivatelja mora ostati valjan i nepromijenjen do UnloadDocument ili Active := False — to izbjegava dodatno kopiranje, ali zahtijeva pažljivo upravljanje vijekom trajanja

Preopterećenje raspona bajtova odbija negativne vrijednosti, Index iznad duljine podataka ili Count koji prelazi preostale bajtove. Preopterećenje pokazivača odbija nil kada je Size različit od nule; preopterećenje TMemoryStream odbija nil strujanje prije bilo kakve promjene stanja dokumenta

U slučaju uspjeha Active postaje True i sva svojstva stranica odražavaju prvu stranicu (PageNumber = 1). U slučaju neuspjeha podiže se iznimka EPdfError

Load policies

TPdfLoadOptions.Default daje omeđene zadane vrijednosti za izvorne bajtove, probleme, xref odjeljke, xref unose i brojeve objekata. PDFium ostaje semantički parser u svakom režimu; revizija omotača postoji jer javni ABI PDFiuma prijavljuje valjanost xref-a, ali ne izlaže prekidač koji isključuje oporavak parsera

Revizija slijedi klasične xref tablice, xref strujanja, hibridne revizije i lance /Prev. Prijavljuje neispravno oblikovane odjeljke, cikluse, sukobljene unose, oštećene pomake objekata, nedostajuće završne oznake, nepodržane filtre strujanja, iscrpljenje proračuna i izvorni oporavak. Prekoračenje konfiguriranog proračuna revizije postavlja AuditComplete na False i proizvodi upozorenje; samo po sebi ne tvrdi da su neprovjereni bajtovi nevaljani

InspectAvailability ostaje lagana izvorna proba dostupnosti za linealizaciju i učitavanje prvo-stranica; ne zamjenjuje strukturni izvještaj učitavanja

Reports

TPdfLoadReport uključuje Status, CrossReferenceTableValid, UsedRecovery, RecoveryRoute, izvorne i strukturne pomake, brojače odjeljaka i unosa, brojače sukoba i oštećenja, ukupne probleme, stanje skraćivanja i tipizirano polje Issues. Isti se izvještaj pohranjuje u LastLoadReport

TPdfRepairReport bilježi je li izvor koristio oporavak, veličinu izlaza i broj stranica, valjanost izlaznog xref-a, završni tekst pogreške i potpuni neovisni izvještaj stroge provjere učitavanja

Repaired output

SaveAsRepaired traži od PDFiuma da zapiše potpunu neinkrementalnu kopiju, a zatim otvara taj izlaz u izoliranom TPdf sa plmStrict. Metoda isporučuje bajtove tek nakon što valjanost xref-a i dosljednost broja stranica prođu. Preopterećenje datoteke piše kroz privremenu datoteku u istom direktoriju i atomarno zamjenjuje odredište

Potpuno prepisivanje uklanja prethodnu inkrementalnu povijest i poništava postojeće raspone bajtova potpisa. Potpisani dokumenti odbijaju se osim ako AllowSignedDocument nije izričito True. Metoda popravlja strukture koje PDFium može uspješno učitati i prepisati; ne jamči oporavak proizvoljno oštećenog sadržaja ni očuvanje digitalnih potpisa

Primjer

// 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);

Vidi također

Active, FileName, LoadCustomDocument, SaveAs