PDFium Delphi Component Docs

LoadDocument politike i popravljeni izlaz

Component: TPdf  ·  Unit: PDFium
Otvara PDF sa politikom compatible, strict ili recovery i opciono upisuje nezavisno verifikovanu popravljenu kopiju

Syntax

procedure LoadDocument;

 

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

DataPointer. Pokazivač na sirove PDF podatke u memoriji.
SizeNativeUInt. Veličina bafera podataka u bajtovima.
BufferedBoolean. Kada je True (podrazumevano), TPdf zadržava sopstvenu kopiju. Kada je False, bafer mora ostati važeći dok se dokument ne isprazni.

 

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

DataTBytes. Sadržaj PDF datoteke kao niz bajtova.
BufferedBoolean. Kada je True (podrazumevano), TPdf zadržava sopstvenu kopiju. Kada je False, niz bajtova mora ostati važeći i nepromenjen dok se dokument ne isprazni.

 

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

DataTBytes. Pozadinski niz bajtova koji sadrži PDF prozor.
IndexInteger. Pomak prvog PDF bajta brojan od nule.
CountInteger. Broj PDF bajtova za učitavanje.
BufferedBoolean. Kada je True (podrazumevano), TPdf kopira samo izabrani prozor. Kada je False, pozadinski niz bajtova mora ostati važeći i nepromenjen dok se dokument ne isprazni.

 

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

DataTMemoryStream. TMemoryStream koji sadrži PDF podatke.
BufferedBoolean. Kada je True (podrazumevano), TPdf zadržava sopstvenu kopiju. Kada je False, memorija toka mora ostati važeća dok se dokument ne isprazni.

 

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

Legacy overload-i koriste compatible režim i čuvaju postojeće ponašanje dok objavljuju nativnu važećnost xref-a i status oporavka kroz LastLoadReport. Overload bez argumenata čita iz putanje sačuvane u FileName. Overload-i Pointer, TBytes i TMemoryStream učitavaju direktno iz podataka u memoriji, zaobilazeći datotečni sistem. Overload za opseg bajtova bira ugrađeni PDF iz većeg kontejnera, protokolnog okvira ili višekratno upotrebljivog prijemnog bafera bez kreiranja privremenog TBytes isečka.

Kada je Buffered True (podrazumevano), TPdf kopira dostavljene bajtove u svoj zadržani bafer. Kada je False, bafer pozivaoca mora ostati važeći i nepromenjen do UnloadDocument ili Active := False — to izbegava dodatnu kopiju ali zahteva pažljivo upravljanje životnim vekom.

Overload za opseg bajtova odbacuje negativne vrednosti, Index preko dužine podataka ili Count koji prelazi preostale bajtove. Pointer overload odbacuje nil kada je Size različito od nule; TMemoryStream overload odbacuje nil tok pre nego što se bilo koje stanje dokumenta promeni

Prilikom uspeha, Active postaje True, a sva svojstva stranica odražavaju prvu stranicu (PageNumber = 1). Prilikom neuspeha podiže se izuzetak EPdfError.

Load policies

TPdfLoadOptions.Default isporučuje ograničene podrazumevane vrednosti za izvorne bajtove, probleme, xref sekcije, xref unose i brojeve objekata. PDFium ostaje semantički parser u svakom režimu; revizija omotača postoji jer javni PDFium ABI prijavljuje važećost xref-a ali ne izlaže prekidač koji isključuje oporavak parsera

Revizija prati klasične xref tabele, xref tokove, hibridne revizije i /Prev lance. Prijavljuje loše formirane sekcije, cikluse, sukobljene unose, oštećene offsete objekata, nedostajuće završne markere, nepodržane filtere tokova, iscrpljivanje budžeta i nativni oporavak. Prekoračenje konfigurisanog budžeta revizije postavlja AuditComplete na False i proizvodi upozorenje; samo po sebi ne tvrdi da su neprovereni bajtovi nevažeći

InspectAvailability ostaje lagana nativna proba dostupnosti za linearizaciju i učitavanje prve stranice; ona ne zamenjuje strukturni izveštaj učitavanja

Reports

TPdfLoadReport uključuje Status, CrossReferenceTableValid, UsedRecovery, RecoveryRoute, izvore i strukturne offsete, brojače sekcija i unosa, brojače sukoba i oštećenja, ukupne probleme, stanje skraćivanja i tipizirani niz Issues. Isti izveštaj se čuva u LastLoadReport

TPdfRepairReport beleži da li je izvor koristio oporavak, veličinu izlaza i broj stranica, važećost izlaznog xref-a, tekst završne greške i kompletan izveštaj nezavisne strict verifikacije učitavanja

Repaired output

SaveAsRepaired traži od PDFium-a da upiše kompletnu neinkrementalnu kopiju, a zatim otvara taj izlaz u izolovanom TPdf-u sa plmStrict. Metoda isporučuje bajtove tek nakon što važećost xref-a i doslednost broja stranica prođu. Overload za datoteku piše kroz privremenu datoteku u istom direktorijumu i atomarno menja odredište

Kompletan prepis uklanja prethodnu inkrementalnu istoriju i poništava postojeće opsege bajtova potpisa. Potpisani dokumenti se odbacuju osim ako AllowSignedDocument nije eksplicitno True. Metoda popravlja strukture koje PDFium može uspešno da učita i prepise; ona ne garantuje oporavak proizvoljno oštećenog sadržaja niti očuvanje digitalnih potpisa

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