Holen Sie sich die export-Wert einer checkbox mit iTextSharp

Arbeite ich auf dynamisch füllen Sie die Felder in einem pdf-Dokument mit ITextSharp. Ich möchte in der Lage zu bestimmen, die "export-Wert" der checkbox wird von der codebehind, um zu bestimmen, welcher Wert zu senden, um dieses Ankreuzfeld, wenn es überprüft werden soll. Die meisten der Dokumente, mit denen ich gearbeitet habe in der Vergangenheit hatte die gleichen export-Wert für jedes Kontrollkästchen, aber die, die ich bin derzeit mit variiert von Kontrollkästchen zu aktivieren. Ich konnte gehen durch alle Textfelder und machen Sie konsequent, aber es würde eine Menge Zeit sparen, in die Zukunft, wenn ich könnte nur bestimmen, was der export-Wert dieser checkbox zur Laufzeit, und legen Sie Sie entsprechend.

Vielen Dank im Voraus!

Habe ich versucht zu implementieren, die die folgende Lösung in C# und endete mit dem folgenden code:

 public string GetCheckBoxExportValue(AcroFields pdfDocument, string checkBoxFieldName)
    {
        AcroFields.Item item = pdfDocument.GetFieldItem(checkBoxFieldName);
        if (item.values.Count > 0)
        {
            PdfDictionary valueDict = item.GetValue(0);

            PdfDictionary appearanceDict = valueDict.GetAsDict(PdfName.AP);

            //if there's an appearance dict at all, one key will be "Off", and the other
            //will be the export value... there should only be two.
            if (appearanceDict != null)
            {


                foreach (PdfName curKey in appearanceDict.Keys)
                {
                    if (!PdfName.OFF.Equals(curKey))
                    {
                        return curKey.ToString(); //string will have a leading '/' character
                    }
                }
            }

            //if that doesn't work, there might be an /AS key, whose value is a name with 
            //the export value, again with a leading '/'
            PdfName curVal = valueDict.GetAsName(PdfName.AS);
            if (curVal != null)
            {
                return curVal.ToString();
            }

        }
        //return null if you get this far
            return null;

    }

Dieser nur zurück "/D" jede einzelne Zeit. Ich bin mir nicht sicher, ob der Ansatz muss anders sein, in C# oder wenn ich mich gerade etwas fehlt.

  • Ich glaube, Sie brauchen zu stoppen, sorgen darüber, wie andere Menschen die Nutzung der Website so viel
  • Ich bin mir nicht sicher, was ich werden sollte, das Lesen in den FAQ ' s?
  • Dies ist ein Auszug aus den FAQ, wenn es darum geht, zu erklären, wie Sie zu akzeptieren eine Antwort: [...] This lets other people know that you have received a good answer to your question. Doing this is helpful because it shows other people that you're getting value from the community. (If you don't do this, people will often politely ask you to go back and accept answers for more of your questions!).
InformationsquelleAutor Ben | 2010-12-20
Schreibe einen Kommentar