2011-01-07 13 views
9

Sono in procinto di compilare un modulo PDF creato utilizzando Acrobat pro con iTextSharp & C# e mi sono trovato bloccato nel tentativo di spuntare un campo di controllo.ItextSharp - Compilazione automatica di un modulo PDF utilizzando C# - Problemi con le caselle di controllo

Ho funzionato per i pulsanti di opzione e le caselle di testo ma non riesco a far funzionare la casella di controllo. Ho anche confermato il nome casella di controllo in questo caso "Q7b" è corretto nel documento Acrobat e può trovare nel modulo utilizzando il seguente codice

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

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

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

} 

Il codice che sto usando per aggiornare la casella di controllo è al di sotto

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

Qualsiasi aiuto sarebbe molto apprezzato.

Brad

risposta

2

valori Casella di controllo sono in genere "On" e "Off". I gruppi radio possono utilizzare qualsiasi valore desiderino (più "Off").

+0

Grazie per il vostro aiuto Marco. Prendendo una pausa e uno sguardo più da vicino al documento pdf ho trovato che la proprietà Valore di esportazione della casella di controllo aveva uno strano valore. impostandolo su On e modificando il codice da abbinare ha risolto il problema fields.SetField ("Q7b", "On"); –

+0

Attento ... che "valore strano" potrebbe essere necessario ovunque il modulo sia normalmente inviato. Se lo usi solo internamente, bene. Ma se mai proverai a tornare al target di invio originale, dovrai tradurre nuovamente quel valore di campo. Più facile da ripristinare e utilizzare lo strano valore nel codice. –

+0

Grazie per l'avvertimento. È una cosa interiore, quindi il cambiamento del valore non avrà alcun effetto. –

4

Ho anche provato On e Off per la casella di controllo e non ha funzionato. Quindi ho aperto in Adobe LiveCycle Designer. Nella proprietà di associazione delle proprietà di modifica delle proprietà modificate del valore di valore. Impostali su Sì e NO. Ora sta funzionando per me.

2

Per le caselle di controllo è necessario passare "1" come valore.

prova a seguire

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

Impostare il valore del campo per il valore delle esportazioni della casella di controllo farà sì che da controllare. Pertanto, se il valore di esportazione è "Sì", l'impostazione del valore del campo su "Sì" farà spuntare la casella di controllo. Se il valore di esportazione è qualcos'altro (ad esempio "On"), sarà necessario impostare il valore del campo su quello per spuntare la casella.

0

fields.SetField ("your_field", "On"); Sì, funziona per impostazione predefinita.

+1

sembra che aaron abbia già fornito una versione più accurata di questa risposta. –

Problemi correlati