#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 будут скрывать поле.