iText und PdfWriter.DID_SAVE

Java-Lord

Mitglied
Hallo zusammen,

ich erzeuge an Hand einer PDF-Vorlage (ist ein leeres Formular) eine zweite PDF Datei. Beim Aufruf der Anwendung (ist eine jar Datei) wird die zweite PDF Datei mit Daten erzeugt.

Also: java -jar XYZ.jar PDF-Vorlage.pdf Ergebnis.pdf "feld1=daten1;feld2=daten2;"

Feld1, Feld2 und etc. sind die Textfelder in der PDF-Vorlage, welche ich mit Daten befülle und anschließend als zweite PDF-Datei (Ergebnis.pdf) speichere. Die Felder der zweiten PDF Datei können durch Kunden nachträglich geändert werden. Es kann auch passieren, dass die Kunden die Daten aus den Textfeldern löschen. Aus Technischen Gründen müssen wir diesen leeren Feldern beim Speichern der Datei Ergebnis.pdf mit "-" oder ein anderes Zeichen befüllen!

Beispiel: Kunde löscht den Inhalt des Feldes Name:
Nach dem Speichern der Datei sieht das Feld Name so aus:
Name: -

Wie kann man bei dem Event PdfWriter.DID_SAVE nur die Text-Felder der PDF-Datei abfragen und durch ein Zeichen ersetzen, falls es leer ist?

Ich benötige nur den JavaScript Code! Wenn ich die Befehle zusammengebaut habe, rufe ich einfach

pdfWriter.setAdditionalAction(PdfWriter.DID_SAVE, PdfAction.javaScript("JavaScript Code", pdfWriter));

auf. Oder gibt es mit iText eine Möglichkeit die leere Text-Felder der aktuell geöffneten PDF-Datei abzufragen?

Vielen Dank im Voraus für die Antworten. 🙂
 
Zum Verständnis: Ablauf:
  1. Es gibt die Dateien XYZ.jar sowie PDF-Vorlage.pdf
  2. "feld1=daten1;feld2=daten2;" ist auch vorgegeben (die 'feldX' sowie 'datenX')
  3. Es wird ausgeführt:
    java -jar XYZ.jar PDF-Vorlage.pdf Ergebnis.pdf "feld1=daten1;feld2=daten2;"
    Das erzeugt die Datei Ergebnis.pdf .
  4. Jetzt kommt ein User, und editiert Ergebnis.pdf , und löscht aus (z.B.) 'feld1' die 'daten1' wieder heraus.
  5. Ein weiteres Java-Programm QQQ.jar ließt Ergebnis.pdf ein, und soll abfragen, welche Felder es alle gibt und welche davon leer sind; die leeren soll es mit "-" befüllen.
Soweit richtig?
 
Hi!

Bis Punkt 4 alles richtig. Kein Programm ließt die Datei Ergebnis.pdf, sondern der User öffnet die Datei einfach mit einem PDF-Tool (Adobe Reader oder PDF-XChange Viewer) und editiert die Daten. Ich habe mittlerweile das Problem gelöst. Ich frage im eingebeteten Javascript ab, ob ein Feld leer ist, wenn ja, dann befülle ich dieses Feld mit einem "-" Zeichen.

var field = getField(feldX);
if (field.value == null || field.value == ''){
field.value = '-'
}

pdfWriter.setAdditionalAction(PdfWriter.WILL_SAVE, PdfAction.javaScript("JavaScript Code von oben", pdfWriter));

Soweit so gut. Es gibt aber noch ein Problem, das ich noch nicht gelöst habe! Es gibt im PDF-Formular Textfelder, die nur Zahlen zulassen! Wenn der User auf einem Feld (Betrag XYZ) den Inhalt löscht, kann ich nicht ein Zeichen "-" reinschreiben. Es kommt stets die Meldung, dass nur Zahlen erlaubt sind. Ich kann mit getField('Feldname') nur den Wert abfragen aber nicht die Eigenschaft des Feldes. Ich weiß es nicht, wie ich abfragen soll, ob dieses Feld nur Zahlen akzeptiert oder nicht. Wenn ich irgendwie herausbekomme, dann kann ich ein 0 reinschreiben und nicht ein Zeichen "-"

Danke.
 
Java:
try{
  // versuche '-' reinzuschreiben
} catch( Throwable e ) {
  // dann eben eine '0'
}
Sofern JavaScript benötigt wird, damit kenn' ich mich nicht so gut aus. (Und mit dem zugehörigen Exceptionhandling schon gleich gar nicht...)
 
Zuletzt bearbeitet:
Wenn ich catch( Throwable e ) verwende, dann funktioniert gar nichts mehr!

Mit nur catch (exc) {} funktioniert mit dem '-' reinschreiben

Mit catch( Throwable e ) funktioniert im Try-Block das Reinschreiben vom Zeichen '-' nicht mehr! Das muss man erst verstehen!?!
 

Neue Themen


Zurück
Oben