Пакетний DOM XFA

TXFAPacketDOM завантажує повний потік XDP або впорядкований масив пакетів PDF /XFA, надає корені пакетів та обмежені запити за локальними іменами шляхів і підтримує редагування елементів, тексту, CDATA, атрибутів, додавання, видалення та перейменування пакетів

Безвтратні незаймані пакети

Кожен завантажений потік чи пакет зберігає свої вихідні байти та структурний відбиток; серіалізація повертає ці точні байти, коли DOM незмінений, а редагування масиву пакетів переписує лише змінений пакет, зберігаючи байти кожного незміненого сусіднього пакета

Канонічний змінений вихідний матеріал

Змінені дерева використовують UTF-8 XML, детермінований порядок просторів імен та атрибутів, кваліфіковані назви елементів, екранування зі сутностей XML, безпечний розділ CDATA для вбудованого ]]>, самозакривні порожні елементи та порядок пакетів з вихідного масиву

Канонічний результат представляє вміст DOM, а не лексичні дрібниці, тому коментарі, інструкції обробки, відступи джерела, вихідну XML-декларацію та вихідний DOCTYPE після редагування не відтворюються; значення внутрішніх сутностей розгортаються як текст, а зовнішні сутності залишаються нерозв'язаними

Запити та редагування

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;

Ведучий // виконує обмежений запит серед нащадків, тоді як сегменти, розділені скісною рисою, обирають безпосередні дочірні елементи; * зіставляє будь-який елемент, а суфікс [N] з нульовим індексом обирає один збіг

Публікація масиву пакетів

SerializePacketArray повертає впорядковані записи TXFAPacketData; передайте кожен запис у THotPDF.AddXFAPacket або використайте SerializeXDPStream з THotPDF.SetXFADocument для форми з одним потоком

Бюджети

TXFADOMLimits.Default обмежує сукупні вхідні та вихідні байти, кількість пакетів, кількість вузлів, глибину, атрибути на вузол, сукупні байти атрибутів і тексту та MaxQueryResults; розбір, перевірка змін, запити, зняття відбитків і серіалізація завершуються з EHPDFXFAError, коли перетнуто межу

Дивіться TXFAPacketDOM, TXFANode та TXFADOMLimits