2011-01-07 64 views
9

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

Respuesta

2

valores Checkbox son por lo general "On" y "Off". Los grupos de radio pueden usar cualquier valor que deseen (más "Desactivado").

+0

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"); –

+0

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. –

+0

Gracias por la advertencia. Es una cosa interna, por lo que cambiar el valor no tendrá flujo en el efecto. –

4

También probé el encendido y apagado para la casilla de verificación y no funcionó. Luego abrí en Adobe LiveCycle Designer. En la propiedad de enlace de casilla de verificación, se modificaron las propiedades de Valor de valor. Configúrelos en Sí y NO. Ahora está funcionando para mí.

2

Para las casillas de verificación debe pasar "1" como valor.

intente seguir

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

Ajuste el valor del campo con el valor de exportación de la casilla hará que se puede comprobar. Entonces, si el valor de exportación es "Sí", establecer el valor del campo en "Sí" marcará la casilla de verificación. Si el valor de exportación es otra cosa (por ejemplo, "Activado"), deberá establecer el valor del campo en ese para marcar la casilla.

0

campos.SetField ("your_field", "On"); En funciona para mí de forma predeterminada.

+1

Parece que Aaron ya ha proporcionado una versión más precisa de esta respuesta. –

Cuestiones relacionadas