XFA Packet DOM

TXFAPacketDOM učitava bilo potpuni XDP tok bilo naredbeni niz paketa PDF-a /XFA, izlaže korijene paketa i omeđene upite lokalnih imena putanja te podržava uređivanja elemenata, teksta, CDATA, atributa, dodavanja paketa, uklanjanja paketa i preimenovanja paketa

Nedirnuti paketi bez gubitaka

Svaki učitani tok ili paket zadržava svoje izvorne bajtove i strukturni otisak; serijalizacija vraća te točne bajtove kada je DOM nedirnut, a uređivanje niza paketa ponovno zapisuje samo promijenjeni paket uz očuvanje bajtova svakog nepromijenjenog brata

Kanonski modificirani izlaz

Modificirana stabla koriste UTF-8 XML, deterministički redoslijed imenskih prostora i atributa, kvalificirana imena elemenata, izbjegavanje XML entiteta, sigurno CDATA razdvajanje za ugrađeni ]]>, samo-zatvarajuće prazne elemente i redoslijed paketa iz izvornog niza

Kanonski izlaz predstavlja DOM sadržaj, a ne leksičke pojedinosti, pa se komentari, upute za obradu, uvlačenje izvora, izvorna XML deklaracija i izvorni DOCTYPE ne reproduciraju nakon uređivanja; vrijednosti unutarnjih entiteta proširuju se kao tekst, a vanjski entiteti ostaju nerazriješeni

Upiti i uređivanja

var
  DOM: TXFAPacketDOM;
  Nodes: TArray<TXFANode>;
  XDP: TBytes;
begin
  DOM := TXFAPacketDOM.Create;
  try
    DOM.LoadXDPStream(SourceBytes);
    Nodes := DOM.SelectNodes('datasets', '//customer/name');
    if Length(Nodes) > 0 then
      Nodes[0].SetText('Updated & verified', True);
    XDP := DOM.SerializeXDPStream;
    PDF.SetXFADocument(XDP);
  finally
    DOM.Free;
  end;
end;

Vodeći // izvodi omeđeni upit potomaka, dok segmenti odvojeni kosom crtom odabiru izravnu djecu; * podudara bilo koji element, a sufiks [N] temeljen na nuli odabire jedno podudaranje

Objava niza paketa

SerializePacketArray vraća naredbene zapise TXFAPacketData-a; proslijedite svaki zapis THotPDF.AddXFAPacket-u ili upotrijebite SerializeXDPStream s THotPDF.SetXFADocument-om za oblik s jednim tokom

Proračuni

TXFADOMLimits.Default omeđuje agregirane ulazne i izlazne bajtove, broj paketa, broj čvorova, dubinu, atribute po čvoru, agregirane bajtove atributa i teksta te MaxQueryResults; raščlamba, provjera mutacije, upit, otiskivanje i serijalizacija ne uspijevaju s EHPDFXFAError-om kada se prekorači granica

Pogledajte TXFAPacketDOM, TXFANode i TXFADOMLimits