2013-04-11 24 views
10

Cel:Jak otworzyć pdf na nowej karcie

muszę wydrukować plik PDF na nowej karcie po zakończeniu niektóre zadania poprawnie.

Kroki: Chcę wykonać metodę, która powinna przejść na serwer, należy PDF i otworzyć go na nowej karcie, starałem się z nimi, ale nie działa:

Controller: export

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

Zobacz:

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

może to działa, ale .. to trochę brudne .. jeje będę spojrzeć, czy jest lepszym wyborem, jeśli nie będę używał na pewno swojej opcji: D – user1520494

+0

tak faktycznie to to brudny hack. : D Daj mi również znać, jeśli znajdziesz coś lepszego. :) – Raman

+0

Raman Ty !! Znalazłem to! :) – user1520494

Odpowiedz

11

rozwiązany! Że pracuje dla mnie

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

Blokowanie wyskakujących okienek uniemożliwia pobieranie pliku w chrome, czy istnieje sposób na obejście tego? (mówienie użytkownikowi, aby zezwolić na wyskakiwanie na tej stronie, wykracza poza ich zakres: / – cpacheco

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

można wykorzystywać następujące rozwiązanie

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

gdzie URL url pdf ...

0

Jeśli ktoś ma podobny problem, żaden z powyższe rozwiązania działały dla mnie w Google Chrome (działały w Firefoksie)

Ten kod działał we wszystkich głównych 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); 
Powiązane problemy