Connect failed: Connection timed out

[GastForen Programme Web/Internet PDF Grundlagen / Web / eForms PDF nur drucken wenn alle Felder ausgefüllt?

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Web/Internet - Webdesign, eForms
Themen
Beiträge
Moderatoren
Letzter Beitrag

PDF nur drucken wenn alle Felder ausgefüllt?

Sanes
Beiträge gesamt: 6

15. Feb 2010, 08:20
Beitrag # 1 von 15
Bewertung:
(39834 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Leute,

Nun ich habe hier ein PDF mit einem Simplen Formular (Name etc) und möchte dass wenn ich auf eine Schaltfläche "Ausdrucken" drücke dass kontrolliert wird ob alles ausgefüllt ist bevor es druckt.

In den Eigenschaften habe ich im Reiter "Aktionen" bei "Maus Loslassen" den Menübefehl "Datei>Drucken" aber es müsste erst kontrollieren ob alle Felder ausgefüllt sind, so wie beim Speichern. (Beim speichern klappts, da ich alle Felder als Pflichtfelder markiert habe) aber meinen Druck-Schalter interessiert das nicht.

Ist das irgendwie machbar? Per Java-script?

Ich arbeite mit Adobe Acrobat 9 Pro Extended.

Danke!
X

PDF nur drucken wenn alle Felder ausgefüllt?

Max Wyss
Beiträge gesamt: 532

25. Feb 2010, 18:35
Beitrag # 2 von 15
Beitrag ID: #434749
Bewertung:
(39665 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das geht via JavaScript.

Aber, es ist zu beachten, dass eine hundertprozentige Sicherheit gegen das Ausdrucken unvollständig ausgefüllter Formulare nicht gegeben ist (es sei denn, der Druckbefehl würde in Acrobat selbst abgefangen.

Was geht, ist das Erstellen eines grossen, schönen "Print me"-Buttons, bei welchem die hinterlegte Aktion erst kontrolliert, ob alles korrekt ausgefüllt ist, und erst dann den Druckbefehl auslöst.

Wenn die anderen Methoden des Druckens (Menubefehl, Toolbutton, Tastaturkürzel) auch abgefangen werden müssen, gibt es das WillPrint-Event. Hier kann eine Valididerung vorgenommen werden, ABER der Druckvorgang kann nicht mehr gestoppt werden. Was hier noch möglich ist, wäre das Einblenden eines Overlays "unvollständiges Formular" oder ähnlich, welches visuell anzeigt, dass das Formular unvollständig ist).

HTH.


als Antwort auf: [#433607]

PDF nur drucken wenn alle Felder ausgefüllt?

taunus11
Beiträge gesamt: 609

25. Feb 2010, 22:37
Beitrag # 3 von 15
Beitrag ID: #434770
Bewertung:
(39647 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Sanes ] Beim speichern klappts, da ich alle Felder als Pflichtfelder markiert habe

Formulare, die nicht vollständig ausgefüllt sind, lassen sich speichern.


als Antwort auf: [#433607]

PDF nur drucken wenn alle Felder ausgefüllt?

Sanes
Beiträge gesamt: 6

26. Feb 2010, 10:19
Beitrag # 4 von 15
Beitrag ID: #434798
Bewertung:
(39619 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Max, vielen Dank für deine Antwort.

Das ist genau was ich erreichen will.
Ich habe einen "Drucken" Button und wenn man dort draufklickt soll ein JavaScript ausgeführt werden das:

1. Kontrollieren ob alle Felder ausgefüllt
2. Wenn ja -> Drucken
3. Wenn nein -> Meldung "Bitte alle Felder ausfüllen" oder so.

Das mit dem Button hab ich alles hingekriegt, aber wie ich die Abfrage erstelle dass er das kontrolliert schaff ich nicht.

Code
if Alle Felder sind ausgefüllt == "1") 
{
Drucken!
}
else
{
(app.alert("Bitte füllen Sie alle Felder aus!", 1, 0, ));
}


Und genau bei den Roten teilen liegt mein Problem. Ich weiss nicht wie ich das hinbekommen soll.

Code
doc.print() 

und

Code
document.all.pdfFile.print() 

wollen bei mir nicht funktionieren.

und wie ich kontrolliere ob alle Felder ausgefüllt sind (Es sind viele) .. k.A

Und die Will-Print Aktion ist nicht so wichtig, es geht hauptsächlich um den Button.

Hoffentlich kann mir einer helfen.

Vielen Dank, Sanes


als Antwort auf: [#434749]

PDF nur drucken wenn alle Felder ausgefüllt?

Uwe Laubender
Beiträge gesamt: 5316

26. Feb 2010, 14:03
Beitrag # 5 von 15
Beitrag ID: #434833
Bewertung:
(39601 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Sanes!
Probiere mal das Drucken mit:

Code
app.doc.print(); 


Bei Deiner if-Anweisung kann ich Dir leider nicht weiterhelfen.


als Antwort auf: [#434798]

PDF nur drucken wenn alle Felder ausgefüllt?

MurphysLaw
Beiträge gesamt: 588

26. Feb 2010, 15:43
Beitrag # 6 von 15
Beitrag ID: #434852
Bewertung:
(39583 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Sanes,

das hier sollte klappen:
Code
allgood(); 
function allgood()
{
var mel;
mel=""
for (var i=0;i<this.numFields;i++)
{
var fName=this.getNthFieldName(i);
var f=this.getField(fName);
if ((f.type != "button") && (f.value.length<1))
{
mel=mel + fName + ", ";
}
}
if (mel==""){
app.doc.print();
}
else
{app.alert("Vor dem Drucken bitte noch folgende Felder ausfüllen: " + mel);
}
}


Hilft det?
:-)

Grüße,
Murphy


als Antwort auf: [#434798]

PDF nur drucken wenn alle Felder ausgefüllt?

Sanes
Beiträge gesamt: 6

1. Mär 2010, 08:12
Beitrag # 7 von 15
Beitrag ID: #434956
Bewertung:
(39530 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Uwe Laubender:
Danke du hast recht ich hab mich da wohl i-wo verlesen :)

MurphysLaw:
Vielen Dank du hast mir sehr geholfen! Der Code funktioniert so gut wie perfekt!
Nun gibt es noch ein Problem... :P
Es sind leider nicht alles Pflichtfelder zb. "2er Name (Optional)" und wenn jemand keinen hat dann soll er ja trotzdem drucken können.

Ich denke ich sehe ca. wie der Code aussehen müsste, bzw abgeändert, ich kann das auch alles machen aber ein kleiner Lösungsansatz wie ich es mit der Syntax hinbekomme wär nicht schlecht :D

Also wenn ich das richtig sehe muss die For-Schleife durch eine normale if / else Abfrage für jedes einzelne Pflichtfeld ersetzen?

Andere Idee:
Die Felder sind einer Zahl zugewiesen? du zählst ja hoch in deiner For-Schleife, kann ich sagen "Wenn i = 2 dann nicht beachten" oder ähnlich?

ich hab an diese Erweiterung gedacht:

Code
if ((f.type != "button") && (f.value.length<1) && (i != 2)) 


denke(hoffe) das würde klappen. ich versuch das mal. nun sind es aber gut .. 10-15 optionale felder, muss das dann so aussehen??


Code
if ((f.type != "button") && (f.value.length<1) && (i != 2) && (i != 4) && (i != 6) && (i != 8) && (i != 10) 


oder kann man das auch so aufbauen?

Code
if ((f.type != "button") && (f.value.length<1) && (i != 2, 4, 6, 8, 10)) 


(2, 4, 6, 8 und 10 sind optionale felder!)

Hoffe jemand kann mir helfen :) wäre sehr dankbar!

Edit:

Gäbe es vllt ein f.Pflichtfeld oder ähnlich? Dann könnte man das ja so machen:

Code
if ((f.type != "button") && (f.value.length<1) && (i = f.Pflichtfeld)) 


Das wär ja am einfachsten.


als Antwort auf: [#434852]
(Dieser Beitrag wurde von Sanes am 1. Mär 2010, 08:20 geändert)

PDF nur drucken wenn alle Felder ausgefüllt?

Uwe Laubender
Beiträge gesamt: 5316

1. Mär 2010, 09:13
Beitrag # 8 von 15
Beitrag ID: #434962
Bewertung:
(39518 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Sanes!
Die Frage ist, in welcher Reihenfolge die Felder in der for-Schleife angesprochen werden: nach der Reihenfolge der Erstellung? Dann hast Du so eher keine Chance, die Optionsfelder auszunehmen, wenn Du die Datei für spätere Änderungen flexibel halten willst.
Was, wenn Du zwischendrin noch an einem Feld etwas änderst? Wird das Feld dann von der for-Schleife als Index 0 erkannt, es hatte aber vorher einen anderen Index?

Nach Tab-Reihenfolge? (Ich weiß es einfach nicht, hab' im Moment auch keine Zeit das zu testen…)

Du könntest natürlich versuchen die Namen der Felder über die for-Schleife in ein Array zu schreiben, und dann anschließend das Array auswerten, um nur mit den benötigten Feldnamen zu arbeiten. Nur so 'ne Idee…

Und zu Deinen Code-Vorschlägen: probier's doch einfach mal aus.


als Antwort auf: [#434956]

PDF nur drucken wenn alle Felder ausgefüllt?

Sanes
Beiträge gesamt: 6

1. Mär 2010, 09:27
Beitrag # 9 von 15
Beitrag ID: #434966
Bewertung:
(39514 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank für die schnelle Antwort!

Du hast Recht, wenn ich ein neues erstelle und das kriegt dann den Index 0 dann werden alle um 1 verschoben und es geht nix mehr :(

das mit dem if i f.Pflichtfeld sollte ja klappen. aber ist es wirklich "f.Pflichtfeld"? glaube nicht .. weiss einer wie die Variable ... konstante (was auch immer?) ^^ heisst die bestimmt ob Erforderlich True/False ist.

danke


als Antwort auf: [#434962]

PDF nur drucken wenn alle Felder ausgefüllt?

Sanes
Beiträge gesamt: 6

1. Mär 2010, 10:42
Beitrag # 10 von 15
Beitrag ID: #434975
Bewertung:
(39497 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Code
if ((f.type != "button") && (f.value.length<1) && (f.required = True)) 


klappt nicht


als Antwort auf: [#434966]

PDF nur drucken wenn alle Felder ausgefüllt?

MurphysLaw
Beiträge gesamt: 588

1. Mär 2010, 11:56
Beitrag # 11 von 15
Beitrag ID: #434984
Bewertung:
(39484 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Sanes ]
Code
if ((f.type != "button") && (f.value.length<1) && (f.required = True)) 


klappt nicht

Klappt nur deshalb nicht, weil einfaches "=" ein zuweisen ist. Der logische Vergleich funzt mit doppelt:
Code
if ((f.type != "button") && (f.value.length<1) && (f.required == True)) 

Du kannst das "=" aber auch ganz weglassen und den impliziten TRUE/False Wert von "required" verwenden:
Code
if ((f.type != "button") && f.required && (f.value.length<1)) 


;-)

Grüßle,
Murphy


als Antwort auf: [#434975]

PDF nur drucken wenn alle Felder ausgefüllt?

Sanes
Beiträge gesamt: 6

1. Mär 2010, 14:56
Beitrag # 12 von 15
Beitrag ID: #435024
Bewertung:
(39461 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Es hat jetzt geklappt!
Vielen Dank für die nette Unterstützung!
Hier mein Code

Code
kontrollieren(); 
function kontrollieren()
{
var feld;
feld=""
for (var i=0;i<this.numFields;i++)
{
var fName=this.getNthFieldName(i);
var f=this.getField(fName);
if ((f.type != "button") && (f.value.length<1) && (f.RequiredLevel != 1))
{
feld=feld + fName + "\n";
}
}
if (feld==""){
app.doc.print();
}
else
{app.alert("Bitte füllen sie vor dem Drucken alle Pflichtfelder aus.\nFehlende Felder:\n\n" + feld);
}
}



als Antwort auf: [#433607]

PDF nur drucken wenn alle Felder ausgefüllt?

Max Wyss
Beiträge gesamt: 532

6. Mär 2010, 11:16
Beitrag # 13 von 15
Beitrag ID: #435567
Bewertung:
(39369 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich möchte den Weg über ein Array, welches die Namen der Pflichtfelder enthält, wirklich hervorheben. Das ganze vereinfacht sich hierdurch sehr stark, da wir nicht mehr sämtliche Felder abarbeiten müssen, und die required Eigenschaft auch nicht bemühen müssen (diese Eigenschaft ist spezifisch für das Übermitteln von Daten gemacht worden, und könnte uns einen grossen Streich spielen (wenn wir übermitteln wollen).

Ein Array lässt sich auch zu Laufzeit dynamisch erweitern (und reduzieren). Damit ist auch der Fall abgefangen, wenn irgend ein "anderes" genauer angegeben werden soll.

Die Prüfschleife sieht dann in etwa so aus:

var fehlercounter = 0 ;
for (var i = 0 ; i < pflichtarr.length ; i++) {
if (this.getField(pflichtarr).value == this.getField(pflichtarr.defaultValue) {
fehlercounter++ ;
}
}

if (fehlercounter == 0) {
// Drucken
} else {
// Warnung
}


Dieser Weg bietet auch wesentlich mehr Flexibilität beim Erweitern und Wiederverwenden des Formulars.


HTH.


als Antwort auf: [#434962]

PDF nur drucken wenn alle Felder ausgefüllt?

Glaha
Beiträge gesamt: 5

18. Mai 2017, 09:23
Beitrag # 14 von 15
Beitrag ID: #557518
Bewertung:
(26261 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,
ich hab hier euren sehr Hilfreichen Code gefunden.

Der läuft auch soweit.

Frage: Habt ihr das Problem gelöst, dass er alle Felder als Pflichtfelder erkennt?

Wenn ja, könntet ihr mir sagen wie?

Ich hab leider keine Ahnung für Javascript - Nicht genug um sowas zu erstellen. Möchte aber ein Formular entspreched bearbeiten.

Vielen herzlichen Dank :-)


als Antwort auf: [#435567]

PDF nur drucken wenn alle Felder ausgefüllt?

taunus11
Beiträge gesamt: 609

18. Mai 2017, 10:19
Beitrag # 15 von 15
Beitrag ID: #557525
Bewertung:
(26256 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Pflichtfelder erkennt man an der Eigenschaft required.


als Antwort auf: [#557518]
X
Connect failed: Connection timed out