So zeigen Sie ein PDF in einem iframe mit ajax nach dem Aufruf ein servlet

Ich habe ein problem, wenn ich will, die Anzeige eines PDF in einem iframe (mit dem Attribut src).Die PDF-Datei noch nie heruntergeladen aus dem browser.
Ich muss verwenden Sie einen ajax-Aufruf, um eine Nachricht in einem popup-Fenster, in einigen Fällen.
Der code des Servlets zur Generierung von PDF funktioniert, weil derzeit verwenden wir diese direkt in das src-Attribut des iframe.

 <iframe src="myServlet" />

Aber wenn ich den servlet mit einem ajax-Aufruf, und möchte ich hinzufügen, dass der Inhalt des PDF-Dokuments im iframe, funktioniert es nicht.
Ich weiß nicht, warum.
Dies ist ein Beispiel für den js :

$.ajax(
{
   url: "myServlet",
   ...
   complete: function(data) {
        var blob = new Blob([data], { type: 'application/pdf' });
        var downloadUrl = URL.createObjectURL(blob);
        $('#myframe').attr("src", downloadUrl);
   }
 }
);

Ich versuche mit chrome und ich hab den Fehler:
jquery-2.1.3.js?ts=13012017:3 GET data:application/pdf;base64,blob:http://localhost:8180/d21d82b6-8254-4a38-907e-129b3ac037fa net::ERR_INVALID_URL

Kann ich sehen, dass ich die Daten als Binär-Datei:
%PDF-1.4
%����
3 0 obj
<>stream
x��{PU��^A��e�(�………………….
……………….
startxref
38448
%%EOF

Sorry, aber ich habe nicht den code hier (zu Hause), aber ich denke, dass die Erklärungen sind ziemlich klar.
Ich weiß nicht, warum die PDF-Datei kann nicht heruntergeladen werden wenn ich mit ajax, iframe und attribut src.
Haben Sie eine Idee?

Dank.
Fred

InformationsquelleAutor Fred B | 2017-01-13



2 Replies
  1. 1

    Diese den trick tun für mich.

    $.ajax(
    {
       url: "myServlet",
       ...
       complete: function(data) {
            $('#myframe').attr('src','data:application/pdf;base64,'+data);
       }
     }
    );

    Außerdem sollten Sie Kodieren die ajax ans diese Weise base64_encode($data).

    Ich hoffe, Sie finden dies hilfreich.

  2. 0

    In Javascript zu Kodieren die ajax-Antwort-sollte man es so machen:

    var enc = btoa(data)

    Wenn Sie Probleme haben, sollten Sie versuchen, diese:

    var enc = btoa(unescape(encodeURIComponent(data)))

    Dann

     $('#myframe').attr('src','data:application/pdf;base64,'+ enc);

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.