Пакетний 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