У меня очень странная проблема с форматами XFA в iText/iTextSharp (iTextSharp 5.3.3 через NuGet). Я пытаюсь заполнить статическую форму XFA, но мои изменения не принимаются.Как установить данные XFA в статической форме XFA в iTextSharp и получить ее для сохранения?
У меня есть оба варианта iText в действии, и вы консультировались со вторым изданием, а также с примерами конверсий кода iTextSharp из книги.
Справочная информация. У меня есть форма XFA, которую я могу заполнить вручную, используя Adobe Acrobat на своем компьютере. Используя iTextSharp, я могу прочитать, что такое Xfa XML-данные и посмотреть структуру данных. Я по существу пытаюсь имитировать это с помощью iText.
Что данные выглядит, когда я добавить данные и сохранить в Acrobat (примечание: это только специальный раздел для наборов данных)
Вот XML-файл Я пытаюсь читать, чтобы заменить существующие данные (примечание: это весь контекст этого файла):
Однако, когда я прохожу путь к замене XML-файл и попытаться установить данные, созданный новый файл (копия оригинала с замененными данными) без каких-либо ошибок, но данные не обновляются. Я вижу, что новый файл создан, и я могу его открыть, но в файле нет данных.
Вот код используется в целях замены данных или заполнения в первый раз, что является разновидностью 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);
}
}
Любая помощь будет очень высоко ценится.
Вы попробовали онлайн-демо? См. Http://demo.itextsupport.com/xfademo. Если эта демонстрация работает, что-то не так с вашим кодом; если это не так, в iText что-то не так. В последнем случае, пожалуйста, заполните форму обратной связи после запуска демонстрации. –
Спасибо, Бруно. Я не пробовал эту демонстрацию, но теперь у меня есть. Когда я пытаюсь выполнить онлайн-демонстрацию и не сглаживаю XFA-файл (что желательно), поля обновляются в демо. – jon333