Показывать / скрывать AcroFields в iTextSharp

#c# #pdf-generation #itextsharp

#c# #pdf-генерация #itext #генерация pdf

Вопрос:

У меня есть следующий код:

 PdfStamper pst = null;
        try
        {
            PdfReader reader = new PdfReader(GetTemplateBytes());
            pst = new PdfStamper(reader, Response.OutputStream);
            var acroFields = pst.AcroFields;

            pst.FormFlattening = true;
            pst.FreeTextFlattening = true;
            pst.SetFullCompression();

            SetFieldsInternal(acroFields);
            pst.Close();
        }

protected override void SetFieldsInternal(iTextSharp.text.pdf.AcroFields acroFields)
{
    acroFields.SetFieldProperty("txtForOffer", "setflags", PdfAnnotation.FLAGS_PRINT, null);
}
  

Как мне показать / скрыть acrofields во внутренней функции setFields?

Дело в том, что пользователь может захотеть загрузить 2 версии PDF, одну с отображением некоторого текста, другую без отображения текста.

Шаблон PDF создается с помощью OpenOffice. Я просто заполняю acrofields.

Ответ №1:

Вы можете установить AcroField как доступное только для чтения следующим образом:

 form.setFieldProperty("companyFld", "setfflags", PdfFormField.FF_READ_ONLY, null);
  

Кстати, это «setfflags», а не «setflags».

РЕДАКТИРОВАТЬ: МОЯ ВИНА!!! Вы просили сделать поле видимым или нет. В этом случае вы бы использовали аргумент «setflags», и вы можете передать любую из констант PdfAnnotation FLAGS_ для настройки видимости.

Комментарии:

1. Что вы пробовали? Pdfаннотация. FLAGS_PRINT сделает его видимым. Pdfаннотация. FLAGS_HIDDEN и FLAGS_INVISIBLE будут скрывать поле.