Я печатаю в PDF-форму, которую я создал в Adobe LiveCycle Designer, используя itextsharp. Когда я отмечаю FormFlattens = true, все поля печатаются, однако, когда я отмечаю FormFlattens = false, поля формально печатаются в форме при открытии файла в Adobe Reader или Adobe Pro. Если я открою файл, скажем, в браузере, все поля будут отображаться так, как они должны, но мне будет сложно попросить конечного пользователя отредактировать PDF в Chrome, затем распечатать в PDF и затем отправить этот файл всем, кому он нужен.
private byte[] Generate(Student student)
{
var reader = new PdfReader(Server.MapPath("~/Content/pdf/template.pdf"));
using (var ms = new MemoryStream())
{
using (var pdfStamper = new PdfStamper(reader, ms))
{
var pdfFormFields = pdfStamper.AcroFields;
pdfFormFields.SetField("Id1", student.Id);
pdfFormFields.SetField("HeaderName1", $"{student.LastName}, {student.FirstName}");
pdfFormFields.SetField("CurrentYear1", $"Fall {DateTime.Now.Year}");
pdfFormFields.SetField("SessionAssigned", student.SessionAssigned.ToString());
pdfFormFields.SetField("StudentName", $"{student.FirstName} {student.MiddleName} {student.LastName}");
var xfa = pdfFormFields.Xfa;
var xml = pdfFormFields.Xfa.DatasetsNode.FirstChild.OuterXml;
using (var stringReader = new StringReader(xml))
{
using (var xmlReader = XmlReader.Create(stringReader))
{
xfa.FillXfaForm(xmlReader);
pdfStamper.FormFlattening = false;
}
}
}
return ms.ToArray();
}
}
Это тоже не те же поля. Это просто случайно, будут ли они показываться в читателе или профессионале.
Я бы хотел, чтобы все поля отображались, когда пользователь уходит на редактирование файла в reader / pro.