2013-04-11 1 views
10

Объективные:Как открыть .pdf на новой вкладке

Я должен напечатать PDF на новой вкладке после некоторых задач закончили правильно.

Шаги: Я хочу, чтобы выполнить метод, который должен идти на сервер, взять PDF и открыть его на новой вкладке, я пытался с ними, но не работает:

контроллер: Экспорт

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

Просмотр:

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

может быть, это работает, но .. это немного грязный .. Jeje Я хочу взглянуть, если есть лучший выбор, если я не буду использовать для того, чтобы ваш вариант: D – user1520494

+0

да на самом деле это это грязный хак. : D Позвольте мне также знать, если вы найдете что-нибудь лучше. :) – Raman

+0

Raman Ty !! Я нашел это! :) – user1520494

ответ

11

Решено! Это не работает для меня

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

Блокировщик всплывающих окон предотвращает загрузку pdf-файла в хром, есть ли способ обходить его? (указание пользователю разрешить всплывающее окно для этой страницы выходит за рамки их понимания: / – cpacheco

1

Вы можете использовать следующее решение

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

где URL является PDF URL ...

0

Если кто-то, имеющий подобную проблему, ни один из вышеупомянутые решения работали для меня в Google Chrome (они работали в Firefox)

Этот код работал во всех основных б 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);