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.
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? –
@JamesBlond Mi piacerebbe vedere il file pdf nel browser (nel formato corretto) ed essere in grado di stampare/scaricare – user3469799
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. –