2016-05-18 17 views
5

Ho un'azione controller che legge un file .pdf da BLOB BLOBSTORAGE e restituisce oggetto flusso al metodo $.ajax().Visualizza stream PDF restituito dal controller utilizzando jquery in una nuova finestra

controller ritorna

var stream = blobStorage.OpenRead(filepath); 
await FileAsync(stream, "application/pdf"); 

Ajax chiamata e risposta

$.ajax({ 
     type: "POST", 
     url: "/PDFfile", 
     data: { 'id': Id }, 
     dataType: "application/pdf", 
     traditional: true, 
     complete: function(data) { 
      var w = window.open("data:application/pdf, " + escape(data.responseText)); 
      w.document.write(data.responseText); 
      w.document.close(); 
     } 
    }); 

Tuttavia, se la chiamata è per la stessa azione di controllo, come mostrato, il file viene visualizzato correttamente.

<a class="pull-right btn-link" target="_blank" data-bind="attr: { href: '/PDFfile/' + Id }"></a> 

Può apparire come una domanda duplicata ma nessuna delle soluzioni ha funzionato per me. L'output che sto ottenendo è come mostrato. enter image description here

+0

E cosa vorresti invece ottenere? Una finestra di dialogo per il download dei file? Una versione renderizzata del pdf con pdf.js o una versione renderizzata con un addon del browser come adobe reader? –

+0

@JamesBlond Mi piacerebbe vedere il file pdf nel browser (nel formato corretto) ed essere in grado di stampare/scaricare – user3469799

+0

Quindi tutti gli utenti dovrebbero avere un add-on per Adobe Reader installato? Se i pdf non sono molto complessi guarderei pdf.js in modo da non dipendere dal componente aggiuntivo. –

risposta

-1

Perché non usi solo HTML standard? Non c'è bisogno di Javascript qui (dato che hai creato un tag standard <a> per il trigger iniziale di azione).

Qualcosa di simile:

<form action="/PDFfile" method="post" target="_blank"> 
    <input type="submit" value="Show me the file in a new tab/window!"/> 
</form> 

Note:

  • assicurarsi di impostare un'intestazione Content-Type: application/pdf nello script Azure, in modo che il browser saprà che è un PDF
  • come dichiarato @JamesBlond potresti non vederlo se non hai un plugin del browser per leggere il PDF. Ma avrai una bella finestra di download e la nuova scheda verrà chiusa automaticamente
Problemi correlati