PDF hostContainer-Rückruf
Folgenden diese Lösung SO hier clients Benachrichtigen ein click-Ereignis in einem PDF-Dokument, wie wird es möglich Benachrichtigen die Kunden, wenn die PDF-Datei wird vom client übermittelten mit dieser.myPDF.submitForm("localhost/Hf.ashx?r=2) - Funktion?
Die PDF-Datei innerhalb eines Benutzersteuerelements dann gerendert in ein HTML-Objekt:
string container = ("<object data='/myfile.pdf' type='application/pdf'></object>");
JS-Datei angehängt die PDF-Datei wird wie folgt vorgenommen:
var webClient = new WebClient();
string htmlContent = webClient.DownloadString(fileurl + "pdf_script.js");
PdfAction action = PdfAction.JavaScript(htmlContnent, pdfstamper.Writer);
pdfstamper.Writer.SetOpenAction(action);
Werden und der Inhalt der js-Datei:
this.disclosed = true;
if (this.external && this.hostContainer) {
function onMessageFunc(stringArray) {
try {
this.myPDF.submitForm("http://localhost/Handler.ashx?EmpNo=12345" + "#FDF", false);
}
catch (e) {
}
}
function onErrorFunc(e) {
console.show();
console.println(e.toString());
}
try {
if (!this.hostContainer.messageHandler);
this.hostContainer.messageHandler = new Object();
this.hostContainer.messageHandler.myPDF = this;
this.hostContainer.messageHandler.onMessage = onMessageFunc;
this.hostContainer.messageHandler.onError = onErrorFunc;
this.hostContainer.messageHandler.onDisclose = function () { return true; };
}
catch (e) {
onErrorFunc(e);
}
}
Wenn die submitForm Aufruf der PDF-Inhalt (form-Felder), bekommen erfolgreich gespeichert, und eine Warnmeldung wird angezeigt, in der PDF-Datei durch dies zu tun:
message = "%FDF-1.2
1 0 obj
<<
/FDF
<<
/Status("Success!")
>>
>>
endobj
trailer
<</Root 1 0 R>>
%%EOF");
return message;
Was ich versuche zu tun ist, um die PDF-callback-client, nachdem Sie die form Einreichen der Notruf gesendet von diesem client eine Möglichkeit, zu erkennen an den client, der das Formular abgesendet wurde, nicht in form von einer Warnung, sondern ein Weg, um die trigger-Funktion in den host (der container, ein iframe, object,...etc).
- Ich bin fehlen einige Informationen zu diesem Schritt: "Wenn die submitForm Aufruf der PDF wird erstellt und eine Warnung wird angezeigt in der PDF-Datei durch dies zu tun:". Ich gehe davon aus, dass eine PDF erstellt wird, auf dem server und auf dem client angezeigt, aber vielleicht bin ich falsch. Vielleicht ist der server wieder eine FDF-Datei. Können Sie das klären?
- Ooops, mein Fehler, die submitForm Aufruf erfolgt, können Sie den Inhalt der PDF nicht erstellen, es ist bereits erbracht, die in einem Benutzer-Steuerelement und eingebettet in ein <object> Entschuldigung, ich habe korrigiert die Frage und fügte hinzu, mehr details darüber, wie die PDF-Datei gerendert wird
- Ich verstehe nicht, oben, wo Sie sagt, "wenn (!diese.hostContainer.messageHandler);" Warum funktioniert diese Zeile ein Semikolon am Ende? Ist das ein Fehler? wenn nicht, was ist der Sinn dieser Zeile? vielen Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
EFD Antwort, die Sie verwendet, war mir unbekannt, also habe ich etwas neues gelernt zu Ihrer Frage. Ich habe studiert, die AcroJS Referenz-und der EFD-Spezifikation in der PDF-Referenz, und ich habe jetzt ein besseres Verständnis von dem, was Ihr code tut. Danke für, die.
Ich gehe davon aus, dass Sie bereits wissen, wie der Auslöser einer JavaScript-Nachricht in eine HTML-Datei mit einem JavaScript-Aufruf aus einer PDF-Datei. Finden Sie die
createMessageHandler()
im JavaScript-Kommunikation zwischen HTML-und PDF - Artikel.Interpretiere ich deine Frage als: "Wie rufe ich diese Methode nach einer erfolgreichen übermittlung der Daten?"
Wenn es eine Lösung für diese Frage, es soll sich um JavaScript. Ich sehe, dass man hinzufügen kann JavaScript in FDF-Datei, aber ich bin mir nicht sicher, ob das JavaScript kann 'sprechen' HTML. Ich bin mir nicht sicher, ob Sie rufen eine JavaScript-Funktion in Ihre ursprüngliche PDF-Datei aus dem FDF-Reaktion. Wenn es möglich ist, sollten Sie einen JavaScript-Eintrag der PDF-ähnlich - /Status-Eintrag.
Den Wert für diesen Eintrag ist ein Wörterbuch, so etwas wie:
In deinem Fall würde ich entfernen, das /Vor /Doc Tasten. Ich glaube nicht, dass du Sie brauchst, würd ich reduzieren, das Wörterbuch zu:
Wo
talkToHtml()
ist eine Methode, die bereits in der PDF-Datei:Ich weiß nicht, ob dies funktionieren wird. Ich habe nie versucht es selbst. Ich bin stützen meine Antwort auf die specs.
Ich weiß nicht, ob Sie wirklich brauchen, um zu verwenden, EFD. Haben Sie versucht, das hinzufügen JavaScript, um Ihre submitForm () - Methode? So etwas wie:
Dies funktioniert nur, wenn Sie uns als FDF. Ich glaube nicht, dass es eine Lösung, wenn Sie senden eine HTML-query-string.
Falls Sie sich Fragen, was
MyDocScript1
undMyDocScript2
sind:Ich bin mir nicht sicher, ob dies alles in der Praxis funktioniert. Bitte lassen Sie mich wissen, so oder so.