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
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"); –
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. –
Grazie per l'avvertimento. È una cosa interiore, quindi il cambiamento del valore non avrà alcun effetto. –