casiopaya80
Goto Top

PDF Formular per Email senden mit individuellem Betreff

Hallo,

ich möchte gerne ein PDF Formular per Email versenden wobei die Betreffzeile automatisch individuell ausgefüllt werden soll (Kundennummer, Name des Kunden und Land).

Ich benötige einen String den ich in das Feld "URL für Verknüpfung eingbenen" kann.

Ich dachte es wäre irgendwas wie mailto:?subject=Name + getField("CustomerName"). Aber leider steht dann nur in der Betreffzeile "Name"... Irgendwas mit dem getField scheint nicht zu stimmen...

Das Formular habe ich mit Adobe Acrobat XI Pro Version 10.0.07 gemacht.

hat jemand eine Idee wie das funktionieren könnte?

Danke!

Content-ID: 241270

Url: https://administrator.de/forum/pdf-formular-per-email-senden-mit-individuellem-betreff-241270.html

Ausgedruckt am: 05.02.2025 um 06:02 Uhr

colinardo
Lösung colinardo 18.06.2014 aktualisiert um 14:31:52 Uhr
Goto Top
Hallo Casiopaya80, Willkommen auf Administrator.de!
Nehme als Aktion der Schaltfläche "JavaScript ausführen" und dann gibst du folgendes ein (Feldnamen musst du natürlich an dein Dokument anpassen):
var c_ID =  this.getField('CustomerID').value;  
var c_name =  this.getField('CustomerName').value;  
var c_land =  this.getField('CustomerCountry').value;  
var betreff = 'Kundennummer: ' + c_ID + ' / Name: ' + c_name + " / Land: " + c_land;  
var body = 'Das ist der Body der Nachricht';  
this.mailDoc(false, "empfaenger@domain.de", "", "", betreff, body );  
Siehe auch dieses Demo-PDF

Dies sind die Parameter für die Funktion mailDoc:
bUI  - (optional) If true (the default), the rest of the parameters are used in a
compose-new-message window that is displayed to the user. If false, the cTo
parameter is required and all others are optional.
Note: (Acrobat 7.0) When this method is executed in a non-privileged context, the
bUI parameter is not honored and defaults to true. See Privileged versus
non-privileged context.

cTo (optional)  - The semicolon-delimited list of recipients for the message.
cCc (optional) - The semicolon-delimited list of CC recipients for the message.
cBcc (optional) - The semicolon-delimited list of BCC recipients for the message.
cSubject (optional) -  The subject of the message. The length limit is 64 KB.
cMsg (optional) - The content of the message. The length limit is 64 KB.
Eine Acrobat Javascript API Referenz gibt es zum nachlesen

Grüße Uwe
Casiopaya80
Casiopaya80 18.06.2014 um 14:31:38 Uhr
Goto Top
Vielen Dank! Funktioniert super!!!! face-smile

Viele Grüße,
Anja
Casiopaya80
Casiopaya80 01.07.2014 um 12:56:04 Uhr
Goto Top
Hallo Uwe,

ich habe noch eine kurze Frage zu meinem Problem von vor 2 Wochen.

Wie kann ich dem Formular denn sagen, dass es nach meinem Text (Body) ein paar Leerzeilen macht?
Jetzt hängt leider die Signatur direkt an meinem Text im Body und ich weiß nicht wie ich diese Leerzeilen einfügen kann?
Könntest Du bitte mir nochmals helfen?

Danke und Grüße,
Anja
colinardo
Lösung colinardo 01.07.2014 aktualisiert um 13:43:23 Uhr
Goto Top
Zitat von @Casiopaya80:
Wie kann ich dem Formular denn sagen, dass es nach meinem Text (Body) ein paar Leerzeilen macht?
var body = 'Das ist der Body der Nachricht\n\n\n';
Grüße Uwe
Casiopaya80
Casiopaya80 01.07.2014 um 13:43:12 Uhr
Goto Top
SUPER! Vielen Dank nochmal!!!
Elchfliege
Elchfliege 17.03.2015 um 12:06:34 Uhr
Goto Top
Vielen Dank für den Tipp mit dem Java-Script. Funktioniert.
ABER leider ist dadurch die Prüfung der erfoderlichen Felder verloren gegangen bei meinem Formular. Wir kann man das Script ergänzen, damit die erforderlichen Felder geprüft werden, dass sie nicht leer sind?
Vielen Dank im voraus
Gert
colinardo
colinardo 17.03.2015 aktualisiert um 13:05:47 Uhr
Goto Top
Hallo Gert, Willkommen auf Administrator.de!
Wir kann man das Script ergänzen, damit die erforderlichen Felder geprüft werden, dass sie nicht leer sind?
Dazu musst du jedes Feld auf seine Werte prüfen und bei einem leeren Feld aus der Funktion springen.
Beispiel für die Prüfung eines Feldes:
var c_ID =  this.getField('CustomerID').value;  
if (c_ID == ""){  
  app.alert('Das Feld darf nicht leer sein.');  
  exit;
}
// usw.
Wenn du alle Textfelder auf einmal prüfen willst, geht das auch mit einer Schleife über alle Textfelder:
for(var i=0; i<this.numFields;i++){
    var f = this.getField(this.getNthFieldName(i));
    if (f.type == "text" && f.value == ""){  
        app.alert('Ein benötigtes Feld ist nicht ausgefüllt');  
        f.setFocus();
        exit;
    }
}
var c_name =  this.getField('CustomerName').value;  
var c_land =  this.getField('CustomerCountry').value;  
var c_ID =  this.getField('CustomerID').value;  
var betreff = 'Kundennummer: ' + c_ID + ' / Name: ' + c_name + " / Land: " + c_land;  
var body = 'Das ist der Body der Nachricht';  
this.mailDoc(false, "empfaenger@domain.de", "", "", betreff, body );  
Für Felder anderen Typs muss man in der Schleife separat prüfen, je nachdem was für ein Typ Feld es ist.

Wenn man nur Felder prüfen will die die Eigenschaft Benötigt (required) haben, kann man das einfach mit Ergänzung des IF-Teils machen:
 if (f.type == "text" && f.required == true && f.value == ""){
Ich verweise auf die JavaScript-Referenz von Acrobat, da stehen die verfügbaren Eigenschaften aller Element drin. Ist für Entwicklungszwecke mit Acrobat unverzichtbar.

Grüße Uwe
Elchfliege
Elchfliege 17.03.2015 um 14:01:01 Uhr
Goto Top
Hallo Uwe
vielen Dank für Deine schnelle Hilfe. Ich denke das wird mir weiterhelfen. Es geht nur um zwei Textfelder die geprüft werden müssen.
Die JavaScript Referenz hatte ich mir schon angeschaut, aber leider habe ich nur sehr wenig Ahnung mit JavaScript.
Ich werde das heute abend mal ausprobieren und dann noch ein Feedback geben.
Nochmals vielen Dank für die schnelle Reaktion!
Elchfliege
Elchfliege 17.03.2015 um 20:04:19 Uhr
Goto Top
Hallo nochmal
habe das Script angepasst und es funtkioniert wie es soll. Super, vielen Dank!
Falls es vielleicht jemand anderem hilft stelle ich das Script mal hier rein:

var c_name = this.getField('Person 1').value;
if (c_name == ""){
Person 1: Förnamn/Efternam
exit;
}
var c_tel = this.getField('Telefon').value;
if (c_tel == ""){
Telefon
exit;
}
var betreff = 'Dein Betreff / ' + c_name;
var body = 'Dein Text';
this.mailDoc(false, "info@xxxxx.xx", "", "", betreff, body );
Elchfliege
Elchfliege 20.03.2015 um 10:26:27 Uhr
Goto Top
Hallo
eine weitere Frage hierzu:
mein Kunde möchte gerne, dass sich das PDF-Dokument in einem neuen Tab oder neuer Seite öffnet. Vor allem auch auf dem Smartphone, so dass das Formular dann direkt im Smartphone (und auch am Desktop-PC) ausgefüllt und versendete werden kann.
Kann mir jemand einen Tipp geben dazu?
Vielen Dank im Voraus!
colinardo
colinardo 20.03.2015 aktualisiert um 11:09:40 Uhr
Goto Top
Was meinst du mit "auf einer neuer Seite" ? Im Browser ?
Dafür reicht es, dem Link in deiner HTML-Datei das Attribut target="_blank" mit zu geben.
<a href="http://www.domain.de/datei.pdf" target="_blank" >Dein Dokument</a>
Aber für sowas bitte in Zukunft einen neuen Thread aufmachen anstatt hier alte Sachen aufzuwärmen, das hat nun gar nichts mit dem Thread zu tun. Merci.

Grüße Uwe
Elchfliege
Elchfliege 20.03.2015 um 11:18:02 Uhr
Goto Top
Danke Uwe
Du hast recht, das ist natürlich eine andere Problematik.
Ich werde es nochmal an anderer Stelle erläutern.
Auf jeden Fall vielen Dank für die schnelle Reaktion.
Viele Grüße
Gert