PDFium Delphi Component Docs

Pravilniki LoadDocument in popravljeni izhod

Component: TPdf  ·  Unit: PDFium
Odpre PDF s pravilnikom compatible, strict ali recovery ter po želji zapiše neodvisno preverjeno popravljeno kopijo

Syntax

procedure LoadDocument;

 

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

DataPointer. Kazalec na surove podatke PDF v pomnilniku.
SizeNativeUInt. Velikost podatkovnega medpomnilnika v bajtih.
BufferedBoolean. Ob True (privzeto) si TPdf shrani svojo kopijo. Ob False mora medpomnilnik ostati veljaven, dokler dokument ni odložen.

 

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

DataTBytes. Vsebina datoteke PDF kot polje bajtov.
BufferedBoolean. Ob True (privzeto) si TPdf shrani svojo kopijo. Ob False mora polje bajtov ostati veljavno in nespremenjeno, dokler dokument ni odložen.

 

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

DataTBytes. Nosilno polje bajtov, ki vsebuje okno PDF.
IndexInteger. Ničelno baziran odmik prvega bajta PDF.
CountInteger. Število bajtov PDF za nalaganje.
BufferedBoolean. Ob True (privzeto) TPdf kopira le izbrano okno. Ob False mora nosilno polje bajtov ostati veljavno in nespremenjeno, dokler dokument ni odložen.

 

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

DataTMemoryStream. TMemoryStream s podatki PDF.
BufferedBoolean. Ob True (privzeto) si TPdf shrani svojo kopijo. Ob False mora pomnilnik toka ostati veljaven, dokler dokument ni odložen.

 

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

Starejše preobremenitve uporabljajo način compatible in ohranjajo obstoječe vedenje, hkrati pa prek LastLoadReport objavijo izvorno veljavnost xref in stanje obnovitve. Preobremenitev brez argumentov bere iz poti, shranjene v FileName. Preobremenitve Pointer, TBytes in TMemoryStream nalagajo neposredno iz podatkov v pomnilniku in obidejo datotečni sistem. Preobremenitev z bajtnim obsegom izbere vgrajeni PDF iz večjega vsebnika, okvira protokola ali znova uporabljivega sprejemnega medpomnilnika, ne da bi ustvarila začasno rezino TBytes.

Ko je Buffered True (privzeto), TPdf kopira podane bajte v svoj zadržani medpomnilnik. Ob False mora klicateljev medpomnilnik ostati veljaven in nespremenjen do UnloadDocument ali Active := False — to se izogne dodatni kopiji, a zahteva skrbno upravljanje življenjske dobe.

Preobremenitev z bajtnim obsegom zavrne negativne vrednosti, Index onkraj dolžine podatkov ali Count, ki sega čez preostale bajte. Kazalčna preobremenitev zavrne nil, ko je Size neničelen; preobremenitev TMemoryStream zavrne tok nil, preden se spremeni katero koli stanje dokumenta

Ob uspehu Active postane True in vse lastnosti strani odražajo prvo stran (PageNumber = 1). Ob neuspehu se sproži izjema EPdfError.

Load policies

TPdfLoadOptions.Default zagotovi omejene privzete vrednosti za izvorne bajte, težave, odseke xref, vnose xref in številke objektov. PDFium v vsakem načinu ostaja semantični razčlenjevalnik; revizija ovoja obstaja, ker javni ABI PDFium poroča o veljavnosti xref, ne izpostavlja pa stikala, ki bi izklopilo obnovitev razčlenjevalnika

Revizija sledi klasičnim tabelam xref, tokovnim xref, hibridnim revizijam in verigam /Prev. Prijavi slabo oblikovane odseke, cikle, nasprotujoče vnose, poškodovane odmike objektov, manjkajoče končne oznake, nepodprte filtre tokov, izčrpanje proračuna in izvorno obnovitev. Prekoračitev nastavljenega proračuna revizije nastavi AuditComplete na False in ustvari opozorilo; sama po sebi ne trdi, da so nepregledani bajti neveljavni

InspectAvailability ostane lahkotna izvorna preizkušnja razpoložljivosti za linearizacijo in nalaganje strani najprej; ne nadomešča strukturnega poročila o nalaganju

Reports

TPdfLoadReport vsebuje Status, CrossReferenceTableValid, UsedRecovery, RecoveryRoute, izvorne in strukturne odmike, števce odsekov in vnosov, števce sporov in poškodb, skupno število težav, stanje prirezanosti in tipizirano polje Issues. Isto poročilo je shranjeno v LastLoadReport

TPdfRepairReport zabeleži, ali je vir uporabil obnovitev, velikost izhoda in število strani, veljavnost izhodnega xref, besedilo končne napake in popolno poročilo neodvisnega preverjanja s strogim nalaganjem

Repaired output

SaveAsRepaired zaprosi PDFium, da zapiše popolno neinkrementalno kopijo, nato odpre ta izhod v izoliranem TPdf s pravilnikom plmStrict. Metoda dostavi bajte šele, ko veljavnost xref in skladnost števila strani uspešno preideta preverjanje. Datotečna preobremenitev piše prek začasne datoteke v isti mapi in cilj nadomesti atomarno

Popoln prepis odstrani prejšnjo inkrementalno zgodovino in razveljavi obstoječe bajtne obsege podpisov. Podpisani dokumenti so zavrnjeni, razen če je AllowSignedDocument izrecno True. Metoda popravi strukture, ki jih PDFium uspešno naloži in prepiše; ne zagotavlja obnovitve poljubno poškodovane vsebine ali ohranitve digitalnih podpisov

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