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.