2013-04-11 20 views
10

Das Ziel:So öffnen .pdf auf einem neuen Tab

Ich habe eine PDF-Datei auf einem neuen Tab zu drucken, nachdem einige Aufgaben korrekt beendet haben.

Schritte: Ich möchte eine Methode auszuführen, die an den Server gehen soll, nehmen Sie die PDF und öffnen Sie sie auf einem neuen Tab, war ich mit diesen Versuch aber funktioniert nicht:

-Controller: Export

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

Ansicht:

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

vielleicht klappt es aber .. das ist ein bisschen schmutzig .. jeje Ich werde einen Blick bin, wenn es eine bessere Wahl ist, wenn ich nicht sicher Ihre Wahl verwenden: es D – user1520494

+0

ja eigentlich ist ein schmutziger Hack. : D Lass mich auch wissen, ob du etwas besseres findest. :) – Raman

+0

Raman Ty !! Ich habe es gefunden! :) – user1520494

Antwort

11

gelöst! Das funktioniert für mich

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

Der Popup-Blocker verhindert das Herunterladen von PDF in Chrom, gibt es eine Möglichkeit, es umzingeln? (dem Benutzer zu sagen, er möge Popup für diese Seite erlauben, ist nicht nachvollziehbar: / – cpacheco

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

Sie folgende Lösung

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

wo URL der pdf-URL ist verwenden können ...

0

Wenn jemand ein ähnliches Problem hat, keiner von die obigen Lösungen funktionierten für mich in Google Chrome (sie funktionierten in Firefox)

Dieser Code funktionierte in allen großen 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); 
Verwandte Themen