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-Key: 241270

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

Printed on: April 20, 2024 at 02:04 o'clock

Member: colinardo
Solution colinardo Jun 18, 2014 updated at 12:31:52 (UTC)
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
Member: Casiopaya80
Casiopaya80 Jun 18, 2014 at 12:31:38 (UTC)
Goto Top
Vielen Dank! Funktioniert super!!!! face-smile

Viele Grüße,
Anja
Member: Casiopaya80
Casiopaya80 Jul 01, 2014 at 10:56:04 (UTC)
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
Member: colinardo
Solution colinardo Jul 01, 2014 updated at 11:43:23 (UTC)
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
Member: Casiopaya80
Casiopaya80 Jul 01, 2014 at 11:43:12 (UTC)
Goto Top
SUPER! Vielen Dank nochmal!!!
Member: Elchfliege
Elchfliege Mar 17, 2015 at 11:06:34 (UTC)
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
Member: colinardo
colinardo Mar 17, 2015 updated at 12:05:47 (UTC)
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
Member: Elchfliege
Elchfliege Mar 17, 2015 at 13:01:01 (UTC)
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!
Member: Elchfliege
Elchfliege Mar 17, 2015 at 19:04:19 (UTC)
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 );
Member: Elchfliege
Elchfliege Mar 20, 2015 at 09:26:27 (UTC)
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!
Member: colinardo
colinardo Mar 20, 2015 updated at 10:09:40 (UTC)
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
Member: Elchfliege
Elchfliege Mar 20, 2015 at 10:18:02 (UTC)
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