2011-01-07 3 views
9

Я заполняю форму pdf, созданную с использованием Acrobat pro с iTextSharp & C#, и обнаружил, что я застреваю при попытке поставить галочку в поле флажка.ItextSharp - Автозаполнение формы pdf с использованием C# - Проблемы с флажками

У меня есть работа для переключателей и текстовых полей, но, похоже, не работает. Я также подтвердил имя флажка в этом случае «Q7b» корректен в акробата документе, и его можно найти на форме, используя следующий код

private string getfieldnames(AcroFields fields) 
{ 
    StringBuilder sb = new StringBuilder(); 

    foreach (string key in fields.Fields.Keys) 
    { 

     sb.Append(key + Environment.NewLine); 
    } 
    return sb.ToString(); 

} 

код, я использую для обновления флажка ниже

using (MemoryStream pdfFlat = new MemoryStream()) 
{ 

    PdfReader pdfReader = new PdfReader(strPath); 
    PdfStamper pdfStamp = new PdfStamper(pdfReader, pdfFlat); 
    AcroFields fields = pdfStamp.AcroFields; 

    //textfields 
    fields.SetField("Initiating_Doctor", "Doctor A"); 
    fields.SetField("Speciality", "Surgeon"); 

    //Radiobuttons 
    fields.SetField("PRELIM_Q1", "Yes"); 
    fields.SetField("PRELIM_Q2", "No"); 
    fields.SetField("PRELIM_Q3", "No"); 
    fields.SetField("PRELIM_Q4", "No"); 

    //checkbox - Set the checkbox to checked but this does not work. 
    fields.SetField("Q7b", "Yes"); 

    pdfReader.Close(); 
    pdfStamp.FormFlattening = true; 
    pdfStamp.FreeTextFlattening = true; 
    pdfStamp.Writer.CloseStream = false; 
    pdfStamp.Close(); 
} 

Любая помощь была бы принята с благодарностью.

Брэд

ответ

2

значения Флажок, как правило, "On" и "Off". Группы радиостанций могут использовать любые желаемые значения (плюс «Выкл.»).

+0

Спасибо за вашу помощь. Марк. Сделав перерыв и более подробно рассмотрев документ pdf, я обнаружил, что значение свойства Export для флажка имеет странное значение. установите для этого значение «Вкл.» и изменив код для соответствия, разрешили поля проблемы. SetField («Q7b», «On»); –

+0

Осторожно ... эта «странная ценность» может быть необходима везде, где форма обычно отправляется. Если вы только когда-либо используете его внутри, отлично. Но если вы попытаетесь вернуться к исходной цели отправки, вам нужно будет снова перевести это значение поля. Легче вернуть его и использовать странное значение в коде. –

+0

Спасибо за предупреждение. Это внутренняя вещь, поэтому изменение значения не будет иметь эффекта потока. –

4

Я также попытался включить и выключить для флажка, и это не сработало. Затем я открылся в Adobe LiveCycle Designer. В свойствах привязки флажка «Изменено по значению ценности». Установите их в положение «Да» и «Нет». Теперь он работает для меня.

2

Для флажков необходимо передать "1" как стоимость.

Попробуйте следующие

fields.SetField("PRELIM_Q1", "1"); 
15

Установка значения поля к значению экспорта от флажка приведет к его проверке. Поэтому, если значение экспорта «Да», то установка значения поля «Да» будет отмечать галочкой. Если значение экспорта является чем-то другим (например, «Вкл.»), Вам нужно установить значение поля для этого, чтобы пометить поле.

0

fields.SetField ("your_field", "On"); Работает для меня по умолчанию.

+1

похоже, что aaron уже предоставил более точную версию этого ответа. –

Смежные вопросы