Wie kann ich XFA-Daten in einem statischen XFA-Formular in iTextSharp festlegen und speichern?

Ich habe ein sehr seltsames Problem mit XFA-Formularen in iText / iTextSharp (iTextSharp 5.3.3 über NuGet). Ich versuche, ein statisches XFA-Formular auszufüllen, aber meine Änderungen werden nicht übernommen.

Ich habe beide Ausgaben von iText in Action und habe sowohl die zweite Ausgabe als auch die iTextSharp-Codebeispielkonvertierungen aus dem Buch konsultiert.

Hintergrund: Ich habe ein XFA-Formular, das ich manuell mit Adobe Acrobat auf meinem Computer ausfüllen kann. Mit iTextSharp kann ich die Xfa-XML-Daten lesen und die Struktur der Daten sehen. Ich versuche im Wesentlichen, das mit iText nachzuahmen.

Wie die Daten aussehen, wenn ich Daten hinzufüge und in Acrobat speichere (Hinweis: Dies ist nur der spezifische Abschnitt für Datensätze)

Hier ist die XML-Datei, die ich einlesen möchte, um die vorhandenen Daten zu ersetzen (Hinweis: Dies ist der gesamte Kontext dieser Datei):

Wenn ich jedoch den Pfad zur Ersatz-XML-Datei übergebe und versuche, die Daten festzulegen, wird die neue Datei (eine Kopie des Originals mit den ersetzten Daten) ohne Fehler erstellt, die Daten werden jedoch nicht aktualisiert. Ich kann sehen, dass die neue Datei erstellt wurde und ich kann sie öffnen, aber die Datei enthält keine Daten.

Hier wird der Code verwendet, um die Daten zu ersetzen oder zum ersten Mal zu füllen. Dies ist eine Variation vonhttp://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);
        }
    }

Jede Hilfe wäre sehr dankbar.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage