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!)
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Okay, Sie brauchen, um zu überprüfen, die low-level-PDF-Objekte für die entsprechenden Werte. Sie sagte, die Werte in der PDF-Referenz (Kapitel 12: Interaktive Funktionen, Abschnitt 7: Interaktive Formulare).
Insbesondere (und in Java):
Sowas. Die üblichen "ich schrieb dieses in die edit-box hier" - Bestimmungen gelten, aber das sollten gut zu gehen. Ich Schreibe eine bedrängende große Menge von low-level-iText-code.
acroFields.GetAppearanceStates(fldName)
zu bekommen ein string-array mit möglichen Werten.GetAppearanceStates
Aussehen bemerkenswert wie das, was ich oben geschrieben hab).Der beste Weg, fand ich um eine checkbox ist:
Fehler:
Die Sequenz enthält mehr als ein element
e.g:
War dies die Letzte Methode, die ich verwendet, um es arbeiten auf der Grundlage der anderen:
Konnte ich nicht die Antwort bekommen, Daneben arbeiten für mich, weil die appearanceDict war immer null. Hier ist eine Methode, die ich schrieb, die Werke für die CheckBox-und RadioButton-Steuerelemente auf den Formularen, die ich bin den Umgang mit.