PDFium Delphi Component Docs

LoadDocument strategijos ir sutaisyta išvestis

Komponentas: TPdf  ·  Modulis: PDFium
Atidaro PDF su suderinama, griežta arba atkūrimo strategija ir pasirinktinai įrašo nepriklausomai patikrintą sutaisytą kopiją

Syntax

procedure LoadDocument;

 

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

DataPointer. Rodyklė į neapdorotus PDF duomenis atmintyje
SizeNativeUInt. Duomenų buferio dydis baitais
BufferedBoolean. Kai True (numatytoji), TPdf pasilieka savo kopiją. Kai False, buferis turi išlikti galiojantis iki dokumento iškrovimo

 

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

DataTBytes. PDF failo turinys kaip baitų masyvas
BufferedBoolean. Kai True (numatytoji), TPdf pasilieka savo kopiją. Kai False, baitų masyvas turi išlikti galiojantis ir nepakeistas iki dokumento iškrovimo

 

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

DataTBytes. Atsarginis baitų masyvas, kuriame yra PDF langas
IndexInteger. Nuo nulio numeruojamas pirmo PDF baito poslinkis
CountInteger. Įkeliamų PDF baitų skaičius
BufferedBoolean. Kai True (numatytoji), TPdf nukopijuoja tik pasirinktą langą. Kai False, atsarginis baitų masyvas turi išlikti galiojantis ir nepakeistas iki dokumento iškrovimo

 

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

DataTMemoryStream. TMemoryStream su PDF duomenimis
BufferedBoolean. Kai True (numatytoji), TPdf pasilieka savo kopiją. Kai False, srauto atmintis turi išlikti galiojanti iki dokumento iškrovimo

 

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

Senosios perkrovos naudoja suderinamą režimą ir išlaiko esamą elgseną, kartu skelbdamos natyvią xref galiojimo ir atkūrimo būseną per LastLoadReport. Perkrova be argumentų skaito iš kelyje, saugomo FileName. Perkrovos su Pointer, TBytes ir TMemoryStream įkelia tiesiogiai iš atmintyje esančių duomenų apeidamos failų sistemą. Baitų diapazono perkrova išrenka įdėtą PDF iš didesnio konteinerio, protokolo kadro ar pakartotinai naudojamo priėmimo buferio nekurdama laikino TBytes pjūvio

Kai Buffered yra True (numatytoji), TPdf pateiktus baitus nukopijuoja į savo išlaikomą buferį. Kai False, kvietėjo buferis turi išlikti galiojantis ir nepakeistas iki UnloadDocument arba Active := False — tai išvengia papildomos kopijos, bet reikalauja atidaus gyvavimo laiko valdymo

Baitų diapazono perkrova atmeta neigiamas reikšmes, Index, viršijantį duomenų ilgį, arba Count, tęsiantį už likusių baitų. Rodyklės perkrova atmeta nil, kai Size nėra nulis; TMemoryStream perkrova atmeta nil srautą prieš pasikeičiant bet kokiai dokumento būsenai

Sėkmės atveju Active tampa True, o visos puslapio ypatybės atspindi pirmąjį puslapį (PageNumber = 1). Nesėkmės atveju iškeliama EPdfError išimtis

Load policies

TPdfLoadOptions.Default pateikia ribotas numatytąsias reikšmes šaltinio baitams, problemoms, xref skyriams, xref įrašams ir objektų numeriams. PDFium kiekviename režime lieka semantiniu analizatoriumi; apvalkalo auditas egzistuoja todėl, kad viešasis PDFium ABI praneša xref galiojimą, bet neatskleidžia jungiklio, išjungiančio analizatoriaus atkūrimą

Auditas seka klasikines xref lenteles, xref srautus, hibridines peržiūras ir /Prev grandines. Jis praneša apie sugadintus skyrius, ciklus, konfliktuojančius įrašus, pažeistus objektų poslinkius, trūkstamus terminalinius žymeklius, nepalaikomus srautų filtrus, biudžeto išsekimą ir natyvų atkūrimą. Viršijus sukonfigūruotą audito biudžetą AuditComplete nustatoma į False ir sukeliama įspėjimas; tai vien savaime neteigia, kad nepatikrinti baitai yra netinkami

InspectAvailability lieka lengva natyvi prieinamumo užklausta linearizacijai ir page-first įkėlimui; ji nepakeičia struktūrinio įkėlimo ataskaitos

Reports

TPdfLoadReport apima Status, CrossReferenceTableValid, UsedRecovery, RecoveryRoute, šaltinio ir struktūrinius poslinkius, skyrių ir įrašų skaitiklius, konfliktų ir pažeidimų skaitiklius, problemų sumas, trumpinimo būseną ir tipizuotą Issues masyvą. Ta pati ataskaita saugoma LastLoadReport

TPdfRepairReport įrašo, ar šaltinis naudojo atkūrimą, išvesties dydį ir puslapių skaičių, išvesties xref galiojimą, terminalinės klaidos tekstą ir visą nepriklausomą griežto įkėlimo tikrinimo ataskaitą

Repaired output

SaveAsRepaired prašo PDFium įrašyti visišką ne prieauginę kopiją, o tada tą išvestį atveria izoliuotame TPdf su plmStrict. Metodas baitus atiduoda tik xref galiojimui ir puslapių skaičiaus darnai praslinkus. Failo perkrova rašo per tą patį katalogą esantį laikinąjį failą ir paskirties vietą pakeičia atomiškai

Visiškas perrašymas pašalina ankstesnę prieauginę istoriją ir panaikina esamus parašų baitų diapazonus. Pasirašyti dokumentai atmetami, nebent AllowSignedDocument yra aiškiai True. Metodas taiso struktūras, kurias PDFium gali sėkmingai įkelti ir perrašyti; jis negarantuoja savavališkai pažeisto turinio atkūrimo ar skaitmeninių parašų išsaugojimo

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