yan2021
Goto Top

PDF-Dokument - Meldung für Pflichtfelder

Hallo,

ich habe ein ausfüllbares PDF-Dokument erstellt.
Dieses enthält 3 Pflichtfelder, die angehakt werden müssen, da ohne diese 3 Angaben eine Weiterbearbeitung nicht möglich ist.

Nun ist es leider so, dass es keinen Hinweis gibt, wenn jemand nun hingeht und das Dokument speichert und ausdruckt, ohne dass er diese 3 Pflichtfelder angehakt hat.

Gibt es eine Möglichkeit, dass die ausfüllende Person irgendeinen Hinweis bekommt, wenn diese 3 Pflichtfelder nicht ausgefüllt wurden?

Folgende Gedanken habe ich mir schon gemacht:

1) Ich könnte mir ggf. auch vorstellen, dass automatisch ein Hinweis erscheint, wenn die ausfüllende Person auf die nächste Seite runterscrollt... also dass dann ein Hinweis erscheint wie z.B. "bitte die 3 Pflichtfelder ausfüllen!".

2) Oder wenn die Person versucht, das Dokument zu speichern oder zu schließen; obwohl ich schon gelesen habe, dass sowas wohl nicht geht...

3) Ich habe auch schon über eine Lösung mit einem Button nachgedacht. Aber das wäre irgendwie nicht wirklich so gut anwendbar.

Vielleicht habt Ihr ja noch eine andere Idee. Vieles geht ja auch mit Scripten, die man im PDF-Dokument hinterlegen kann.

Danke und Grüße von
Yan face-wink

Content-ID: 669137

Url: https://administrator.de/contentid/669137

Ausgedruckt am: 31.10.2024 um 10:10 Uhr

stacktrace
stacktrace 30.10.2024 aktualisiert um 15:28:07 Uhr
Goto Top
Moin,

Ich gehe als Editor von Adobe Pro/Writer aus.

Kannst nen JavaScript drüber rennen lassen:

Iwie sowas:

// pflichtfelder definieren
function checkRequiredFields() {

    var requiredFields = ["Feld1", "Feld2", "Feld3"];  
    var missingFields = [];
    
    // Pflichtfeld pruefen
    for (var i = 0; i < requiredFields.length; i++) {
        var fieldName = requiredFields[i];
        var field = this.getField(fieldName);
        
        // wenn leer -> missingFields 
        if (field.value === "") {  
            missingFields.push(fieldName);
        }
    }
    
    // wenn missingFields gefuellt, breche Vorgang ab (save/print) und gebe MsgBox aus
    if (missingFields.length > 0) {
        app.alert({
            cMsg: "Bitte füllen Sie alle Pflichtfelder aus:\n" + missingFields.join(", "),  
            cTitle: "Unvollständiges Formular",  
            nIcon: 0
        });
        return false; // Wird abgebrochen
    }
    
    return true; //alles gut, weiter gehts
}

// drucken
this.addEventListener("WillPrint", function() {  
    if (!checkRequiredFields()) {
        // Druckvorgang abbrechen, wenn missingFields gefüllt
        event.preventDefault();
    }
});

// Speichern
this.addEventListener("WillSave", function() {  
    if (!checkRequiredFields()) {
        // speichern abbrechen, wenn missingFields gefüllt
        event.preventDefault();
    }
});

Also: das kannst idR. wunderbar abfangen via JavaScript (Werkzeuge > JavaScript > JavaScript-Konsole). Code reinkippen (bitte selbstständig nochmals validieren); Dokument speichern, losgehts.

Ggf. gibts auch noch andere und schönere Lösungen.

Gruß

[Bitte geposteten KI Code zukünftig vor dem Posten auf grundsätzliche Funktionalität prüfen! Unsere neuen KI-Richtlinien sind hier eindeutig, Merci. (Moderation)]
Yan2021
Yan2021 30.10.2024 um 15:24:10 Uhr
Goto Top
Danke Dir für Deine Mühe.
Ich werde den Code gleich mal testen....

Grüße von
Yan face-wink
Yan2021
Yan2021 30.10.2024 aktualisiert um 15:49:30 Uhr
Goto Top
...ich habe es eben mal mit Deinem Code versucht. Und ja, ich nutze die Adobe Pro Version

Habe zunächst den Code in "JavaScript-Anweisungen für Dokumente" eingesetzt und im Code lediglich die Bezeichnungen der Felder (Feldnamen) angepaßt.

Anschließend habe ich mal nur eines von 3 Häkchen gesetzt und dann das Dokument gespeichert... und dabei erhielt ich keine Meldung... kein Fenster und das Dokument wurde problemlos gespeichert.

Hier mal zwei Screenshots, wo ich den Code eingetragen habe:
- die Anpassung sieht man rot umrandet -

javascript

javascript 2

Habe ich ggf. was falsch gemacht?

Grüße von
Yan face-wink
stacktrace
stacktrace 30.10.2024 aktualisiert um 15:54:15 Uhr
Goto Top
Das passt, aber heißen denn die Felder bzw Häkchen auch tatsächlich Zustimmung #1#2#3?

Klingt so, als würde es nicht die Felder selektieren bzw. prüfen. Die Felder sollten wissen, wie Du sie nennen möchtest (also nicht nur im Script definieren).

VG
Yan2021
Yan2021 30.10.2024 um 16:14:11 Uhr
Goto Top
Hallo und danke für die weitere Antwort.

Ich habe hier mal einen Screenshot gemacht, wo Du den Inhalt der Eigenschaften eines der 3 Felder sehen kannst. Dort steht als Feldname "Zustimmung 1".

javascript 3

Oder ist doch etwas anderes damit gemeint?

Grüße von
Yan face-wink
catrell
catrell 30.10.2024 aktualisiert um 16:42:32 Uhr
Goto Top
Das ist mal wieder typischer ungetesteter KI Code der nicht funktionieren kann... Das Save-Event kann man in Acrobat nicht abbrechen, schon gar nicht mit event.preventDefault() das es in Acrobat überhaupt nicht gibt, das addEventListener gibbet auch ned, KI Kruscht halt ....

screenshot

screenshot

Am besten ist es einen Button anzubringen mit dem die Weiterverarbeitung gestartet werden muss, und hier den Check zu hinterlegen, bzw. in die Felder die Validierung zu hinterlegen und dann mit dem Button den Check aller Formfelder zu triggern.

Gruß catrell
Yan2021
Yan2021 31.10.2024 aktualisiert um 08:00:28 Uhr
Goto Top
Hallo und danke auch Dir @catrell für Deinen Kommentar.

Oh, ich wußte überhaupt nicht, dass KI mittlerweile sogar Script-Code schreiben kann...
Dazu wüßte ich gerne mehr (paßt zwar jetzt nicht in diesen Thread - bin aber für Hinweise dankbar).

An einen Button hatte ich ursprünglich auch schon mal gedacht. Aber das wäre hier nicht gewünscht.
Außerdem füllen eh maximal 30% der User dieses Formular am Computer aus. Die meisten Leute drucken das Teil aus, füllen es dann per Hand aus, scannen es dann wieder ein und senden es uns dann per Email... oder senden es gleich mit der Post.

Daher würde ein Button den Ausfüllvorgang nur verkomplizieren... vorallem, da es auch von Menschen ausgefüllt wird, die sowas einfach nicht so gut können und/oder sich mit Computern nicht so gut auskennen.

Gibt es - außer Button - also keine andere Lösung?
Ich habe ja schon versucht, es nun optisch besser darzustellen, indem ich über diese 3 Punkte noch in großer Schrift in rot und fett und mit hellrotem Hintergrund "Pflichtefelder..." geschrieben habe. Aber auch das sieht man natürlich nicht so gut, wenn man das Formular dann in s/w ausdruckt face-smile

Aber vielleicht habt Ihr ja noch eine gute Idee - ggf. auch über Code hinaus face-wink

Grüße von
Yan face-wink
catrell
catrell 31.10.2024 aktualisiert um 08:03:24 Uhr
Goto Top
Aber vielleicht habt Ihr ja noch eine gute Idee - ggf. auch über Code hinaus face-wink
Web-Formular bauen, das ist Cross-Device funktional. PDFs mit JavaScript werden doch heute überall gefiltert und als größtenteils als potentiell Malware befallen angesehen, außerdem funktioniert es nicht überall.

PDF JavaScript wurde nicht geschaffen um damit ganze Workflows abzubilden, es ist ehrlich gesagt eine Technik von Anno Dazumal.
Yan2021
Yan2021 31.10.2024 um 08:03:41 Uhr
Goto Top
Hallo nochmal und danke für die schnelle Antwort.

Dieses Formular wird nur auf Anforderung versendet. Daher wird es auch nicht als SPAM/Malware angesehen. Wir weisen eh darauf hin, auch den SPAM-Ordner zu kontrollieren, wenn wir es versendet haben.

Webseite war auch schon eine Idee, die wir hatten. Das soll aber erst ab Mitte 2025 umgesetzt werden, da wir eine neue Webseite bekommen, die dann auch sowas kann...

Was meinst Du mit "funktioniert es nicht überall"?
Meinst Du nicht auf jedem Computer? Oder nicht mit jedem PDF-Reader?

Grüße von
Yan face-wink
catrell
catrell 31.10.2024 um 08:05:01 Uhr
Goto Top
Was meinst Du mit "funktioniert es nicht überall"?
Meinst Du nicht auf jedem Computer? Oder nicht mit jedem PDF-Reader?
Ja, Tablet, Smartphone, oder andere Reader machen da größtenteils nicht mit.
Yan2021
Yan2021 31.10.2024 um 08:10:26 Uhr
Goto Top
...ok, verstehe. Aber ich denke eh, dass es so gut wie keiner unserer Clienten per Tablet od. Smartphone ausfüllen wird.
Wie gesagt, machen es (leider!) sehr viele über ausdrucken und per Hand ausfüllen.

Daher ist es vielleicht auch nicht ganz so wichtig.
Ich hatte einfach gedacht, es gäbe eine einfache Lösung für dieses Problem.
Dann müssen wir halt weiterhin damit leben, dass es immer wieder Leute gibt, die diese 3 Felder nicht oder nicht komplett ausfüllen. Dann müssen wir eben nochmal schreiben... nochmal die entspr. Seite des Formulars an die Leute senden und nochmals um Komplettierung bitten. Ist halt unnötig aufwendig face-smile

Danke und Grüße von
Yan face-wink
catrell
catrell 31.10.2024 aktualisiert um 11:10:43 Uhr
Goto Top
Meldung beim Speichern oder Drucken anzeigen geht schon mit obiger Function (ohne die "this.addEventListener" Abschnitte ), aber Abbrechen kannst du diese Vorgänge halt nicht, auch wenn die Felder nicht ausgefüllt sind wird gespeichert oder gedruckt. Du musst nur den Funktionsaufruf (checkRequiredFields();)in den jeweiligen Document Events für Speichern und Drucken aufrufen.