2017-01-06 12 views
0

So erstellen ich eine Radio-Gruppe mit dieser PdfFormField.createRadioButton() dann Aufruf der SetFieldName().Wie Feldname von PdfFormField aus PdfAnnotation extrahieren

Die PdfAnnotation zeigt jedoch keine Schlüssel an, die den Feldnamen speichern. Ich sah mir die anderen Wörterbücher in der PdfAnnotation an, konnte aber keine finden.

reader.getAcroFields(). GetFields(). KeySet() listet die Feldnamen der Formularfelder auf, aber ich möchte fragen, ob es einen Weg über PdfAnnotation gibt?

Ich habe versucht, einen benutzerdefinierten PdfName in das Funkgruppenobjekt einzufügen, aber es wird nicht im Wörterbuch von PdfAnnotation angezeigt.

Antwort

3

Sie verwechseln das Konzept einer Annotation (Link-Annotation, Dateianhang-Annotation, Widget-Annotation, ...) und ein Formularfeld (Textfeld, Auswahlfeld, Schaltflächenfeld, Unterschriftsfeld).

In iText 5 werden Anmerkungen in einer Klasse mit dem Namen PdfAnnotation behandelt; Formularfelder werden in einer Klasse namens PdfFormField behandelt. Sie versuchen, etwas zu tun, das für eine PdfFormField mit der Klasse PdfAnnotation spezifisch ist. Das ist falsch.

Ich verstehe die Wurzel der Verwirrung: jedes sichtbaren Formularfeld entspricht mindestens ein Widget Annotation. Die meisten sichtbaren Formularfelder entsprechen genau eine Widget Annotation. Aus diesem Grund haben wir eine Design-Wahl in iText 5 gemacht, um PdfFormField erweitert PdfAnnotation zu haben.

Diese Designauswahl stimmt mit der PDF-Spezifikation überein, wo Feldwörterbücher für Felder, die einer einzelnen Widget-Annotation entsprechen, in ein einziges PDF-Wörterbuch zusammengeführt werden können.

In der Praxis finden Sie PDF-Wörterbücher in einer PDF-Datei, die typische Einträge für ein Widget Annotation Dictionary und ein Field Dictionary kombinieren. (Das erklärt auch, warum es eine getMerged() Methode in iText gibt: diese Methode holt Sie die zusammengeführten Wörterbuchobjekte.)

Ich hoffe, dies erklärt bereits einen Teil Ihres Problems. Sie scheinen auch ein anderes Problem zu haben, aber ich verstehe nicht, was Sie tun wollen. Bitte erläutern Sie die Verwendung von Verweisen auf ISO-32000-1, damit die Benutzer verstehen können, welches technische Feature Sie implementieren möchten.

+0

Hallo Bruno, danke für die Klarstellung. Wenn ich Kontrollkästchen mit RadioCheckField erstellte, konnte ich den Feldnamen im Wörterbuch der Anmerkung nicht finden, aber ich konnte es in den AcroFields finden. Ich glaube, ich habe gefunden, wonach ich suche. Vielen Dank – chitgoks