2013-04-11 29 views
10

L'Obiettivo:come aprire .pdf in una nuova scheda

devo stampare un PDF in una nuova scheda dopo che alcuni compiti sono finiti in modo corretto.

Passi: Voglio eseguire un metodo che dovrebbe andare al server, prendere il PDF e aprirlo in una nuova scheda, stavo cercando con questi, ma non funziona:

controller: Export

public ActionResult PrintPdf() 
    { 
     Response.AppendHeader("Content-Disposition", "inline; filename= " + MyClassPdfWriter.GetFileName); 
     return File(MyClassPdfWriter.GetMemoryStream, "application/pdf"); 
    } 

Vista:

function TasksSucced(){ 
     $.get('@Url.Action("PrintPdf", "Export", "new {target = _blank}")'); 
} 
+0

forse funziona, ma .. che è un po 'sporca .. jeje sto andando a dare un'occhiata se c'è una scelta migliore, se non userò di sicuro la vostra opzione: D – user1520494

+0

sì realmente è un hack sporco. : D Fammi sapere anche se trovi qualcosa di meglio. :) – Raman

+0

Raman Ty !! L'ho trovato! :) – user1520494

risposta

11

risolto! Che funziona per me

window.open('/Export/PrintPdf'); 
+2

Il blocco popup impedisce il download del pdf in chrome, c'è un modo per aggirarlo? (dire all'utente di consentire il pop-up per questa pagina va oltre la loro comprensione: / – cpacheco

1
$("a[target!='_blank'][href$='.pdf']").attr("target", "_blank"); 
1

è possibile utilizzare la seguente soluzione

jQuery('<form target="_blank" action="' + URL + '" method="get"></form>').appendTo('body').submit().remove(); 

dove URL è l'URL pdf ...

0

Se qualcuno sta avendo un problema simile, nessuno di le soluzioni di cui sopra ha funzionato per me in Google Chrome (hanno funzionato in Firefox)

Questo codice ha funzionato in tutte le principali b rowsers:

var a = document.createElement('A'); 
var filePath = 'https://pathtopdf.com/file.pdf'; 
a.href = filePath; 
a.download = filePath.substr(filePath.lastIndexOf('/') + 1); 
document.body.appendChild(a); 
a.click(); 
document.body.removeChild(a); 
Problemi correlati