Изменение размера шрифта поля XFA без нарушения прав на использование - PullRequest
1 голос
/ 06 февраля 2020

Я пытаюсь заполнить данные в документе 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 может решить эту проблему.

...