Я пытаюсь заполнить данные в документе XFA, а также изменить размер шрифта данных, заполненных в текстовом поле. Мне удалось заполнить данные в XFA do c, используя PdfStamper
в режиме добавления и используя метод FillXfaForm
для объекта XfaForm
. Этот подход правильно заполняет XFA do c при сохранении прав на использование. Но теперь я также хочу изменить размер шрифта заполненных данных. Это свойство размера шрифта находится в Template
в XFA do c. Из моего понимания я не могу использовать метод FillXfaForm
, чтобы изменить вещи в Template
XFA. Поэтому я использую метод SetXfa
для объекта XfaForm
, чтобы изменить размер шрифта и значение поля. Код:
public void Fill()
{
string nodeName = "form1[0].Page1[0].xxxxxx[0].yyyyy[0].zzzzzzz[0]";
using (PdfReader pdfReader = new PdfReader(new FileStream(filePath, FileMode.Open)))
using (FileStream outputStream = new FileStream(destinationFilePath, FileMode.Create))
{
PdfReader.unethicalreading = true;
using (var stamper = new PdfStamper(pdfReader, outputStream, '\0', true))
{
var form = stamper.AcroFields;
var xfaForm = form.Xfa;
// set field value
xfaForm.DatasetsSom.Name2Node[nodeName].InnerText = "54321";
// get the <font /> node
var fontNode = xfaForm
.TemplateSom
.Name2Node[nodeName]
.ChildNodes
.Cast<XmlNode>()
.First(n => n.Name.Equals("font"));
// set font size
fontNode.Attributes["size"].Value = "12pt";
xfaForm.Changed = true;
xfaForm.SetXfa(stamper.Writer);
}
}
}
Это правильно заполняет XFA do c и устанавливает размер шрифта, но нарушает права на использование, и я получаю это сообщение, когда открываю заполненную XFA do c в Adobe Reader :
В этом документе включены расширенные функции Adobe Reader. Документ был изменен с момента его создания, и использование расширенных функций больше не доступно. Пожалуйста, свяжитесь с автором для оригинальной версии этого документа.
Если я удаляю часть изменения размера шрифта и продолжаю использовать SetXfa
для заполнения данных, то я не получаю сообщение об ошибке выше.
Я прочитал главу 8 книги «iText in Action», но не смог понять, как изменить размер шрифта при сохранении прав на использование.
Я использую iTextSharp. Я готов перейти на iText7, если iText7 может решить эту проблему.