Estoy en el proceso de rellenar un formulario pdf creado con Acrobat pro con iTextSharp & C#, y me he encontrado atascado al intentar marcar un campo de casilla de verificación.ItextSharp - Autocompletar un formulario en PDF usando C# - Problemas con casillas de verificación
Lo tengo funcionando para botones de opción y cuadros de texto pero parece que no funciona. También he confirmado el nombre casilla de verificación en este caso "Q7b" es correcta en el documento acróbata y lo encuentras en el formulario utilizando el siguiente código
private string getfieldnames(AcroFields fields)
{
StringBuilder sb = new StringBuilder();
foreach (string key in fields.Fields.Keys)
{
sb.Append(key + Environment.NewLine);
}
return sb.ToString();
}
El código que estoy utilizando para actualizar la casilla de verificación está por debajo
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();
}
Cualquier ayuda sería muy apreciada.
Brad
Gracias por su ayuda Marcar. Después de tomar un descanso y mirar más de cerca el documento pdf encontré que la propiedad Exportar valor de la casilla tenía un valor extraño. estableciendo esto en Sí y cambiando el código para que coincida ha resuelto el problema fields.SetField ("Q7b", "On"); –
Cuidado ... ese "valor extraño" puede ser necesario siempre que el formulario se envíe normalmente. Si solo lo estás usando internamente, bien. Pero si alguna vez intenta volver al objetivo de envío original, tendrá que volver a traducir ese valor del campo. Es más fácil revertirlo y usar el extraño valor en tu código. –
Gracias por la advertencia. Es una cosa interna, por lo que cambiar el valor no tendrá flujo en el efecto. –