web-dev-qa-db-fra.com

Comment ouvrir .pdf sur un nouvel onglet

L'objectif:

Je dois imprimer un PDF sur un nouvel onglet une fois que certaines tâches sont terminées correctement. 

Étapes: Je veux exécuter une méthode qui devrait aller sur le serveur, prendre le PDF et l'ouvrir sur un nouvel onglet. J'essayais avec ceci mais cela ne fonctionne pas

Contrôleur : Exporter

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

Vue

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

Résolu! Ça marche pour moi

 window.open('/Export/PrintPdf');
16
user1520494
$("a[target!='_blank'][href$='.pdf']").attr("target", "_blank");
2
Timtech

Si quelqu'un rencontre un problème similaire, aucune des solutions ci-dessus ne fonctionne dans Google Chrome (elles fonctionnent dans Firefox).

Ce code a fonctionné dans tous les principaux navigateurs:

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);
2
Jordash

Vous pouvez utiliser la solution suivante

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

où URL est l'URL du pdf ...

1
Ephy L

Vous pouvez essayer d’utiliser jQuery.deferred . J'ai préparé un exemple de fonction pour vous. Il traitera l'appel getPdf, puis résoudra la promesse. J'espère que cela t'aides

function getPDF() {
    return '';
}

getPdf()
  .then(function(response) {
    console.log('response here' + response);
    window.open(response);
  }).fail(function(){
      console.error('failed reposne');
  });
0
dganenco