ItextSharp - автозаполнение PDF-формы с использованием C # - проблемы с флажками - PullRequest
9 голосов
/ 07 января 2011

Я нахожусь в процессе заполнения формы PDF, созданной с помощью Acrobat pro с iTextSharp & C #, и застрял при попытке поставить галочку в поле.

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

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();
}

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

Бред

Ответы [ 6 ]

16 голосов
/ 13 февраля 2012

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

4 голосов
/ 28 октября 2011

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

2 голосов
/ 25 ноября 2011

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

Попробуйте выполнить

fields.SetField("PRELIM_Q1", "1");
2 голосов
/ 07 января 2011

Флажки обычно имеют значения «Вкл.» И «Выкл.».Радиогруппы могут использовать любые желаемые значения (плюс «Выкл.»).

0 голосов
/ 02 января 2019

Не уверен, что это библиотека или как был создан мой шаблон PDF, но я пробовал да / нет, вкл / выкл, истина / ложь ... ни одна из этих опций не работала. Использование «1» и «0» сработало.

Я бы посоветовал поэкспериментировать с этими 4 вариантами, пока не найдете подходящие значения.

0 голосов
/ 06 июня 2014

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

...