Jak ustawić dane XFA w statycznym formularzu XFA w iTextSharp i zapisać je?

Mam bardzo dziwny problem z formularzami XFA w iText / iTextSharp (iTextSharp 5.3.3 przez NuGet). Próbuję wypełnić statyczny formularz w stylu XFA, jednak moje zmiany nie są podejmowane.

Mam obie edycje iText w akcji i konsultowałem drugą edycję, a także konwersje przykładowe kodu iTextSharp z książki.

Tło: Mam formularz XFA, który mogę wypełnić ręcznie za pomocą programu Adobe Acrobat na moim komputerze. Za pomocą iTextSharp mogę odczytać, jakie są dane XML Xfa i zobaczyć strukturę danych. Staram się naśladować to za pomocą iText.

Jak wyglądają dane po dodaniu danych i zapisaniu w programie Acrobat (uwaga: jest to tylko konkretna sekcja dotycząca zestawów danych)

Oto plik XML, który próbuję przeczytać, aby zastąpić istniejące dane (uwaga: to są całe konteksty tego pliku):

Jednak kiedy przekazuję ścieżkę do zastępującego pliku XML i próbuję ustawić dane, nowy plik utworzony (kopia oryginału z zastąpionymi danymi) bez żadnych błędów zostanie rzucony, ale dane nie są aktualizowane. Widzę, że nowy plik jest tworzony i mogę go otworzyć, ale w pliku nie ma żadnych danych.

Oto kod używany do zastąpienia danych lub wypełnienia po raz pierwszy, co jest odmianąhttp://sourceforge.net/p/itextsharp/code/HEAD/tree/trunk/book/iTextExamplesWeb/iTextExamplesWeb/iTextInAction2Ed/Chapter08/XfaMovie.cs

public void Generate(string sourceFilePath, string destinationtFilePath, string replacementXmlFilePath)
    {
        PdfReader pdfReader = new PdfReader(sourceFilePath);
        using (MemoryStream ms = new MemoryStream())
        {
            using (PdfStamper stamper = new PdfStamper(pdfReader, ms))
            {
                XfaForm xfaForm = new XfaForm(pdfReader);
                XmlDocument doc = new XmlDocument();
                doc.Load(replacementXmlFilePath);
                xfaForm.DomDocument = doc;
                xfaForm.Changed = true;
                XfaForm.SetXfa(xfaForm, stamper.Reader, stamper.Writer);
            }

            var bytes = ms.ToArray();
            File.WriteAllBytes(destinationtFilePath, bytes);
        }
    }

Każda pomoc byłaby bardzo mile widziana.

questionAnswers(2)

yourAnswerToTheQuestion