web-dev-qa-db-fra.com

Ouvrez un PDF dans une nouvelle fenêtre du navigateur avec angularjs

Je suis nouveau sur angular js et je souhaite ouvrir un document PDF dans une nouvelle fenêtre du navigateur après avoir appuyé sur un bouton).

Je fais une requête GET avec $http.get() à l'avant, au backend il y a un service de repos Java qui répond à la GET et génère un PDF. Je souhaite l'ouvrir = PDF sur le navigateur.

S'il n'est pas possible d'ouvrir le PDF de cette manière, alors ouvrez au moins n'importe quel PDF avec AngularJs, comment pourrais-je faire cela?)

@GET
@Path("/printPdf")
public Response printService(){

//generates the pdf

File reportFile = new File(filePath);
String name = reportName + "." + "pdf";
ResponseBuilder response = Response.ok(new     TemporaryFileInputStream(reportFile));
response.header("Content-Disposition", "attachment; filename=" + name);
response.header("Content-Type", "application/pdf");
response.header("Access-Control-Expose-Headers", "x-filename");
response.header("x-filename", name);

return response.build();
}

c'est ce qu'il y a au niveau du backend pour générer la réponse dans le service de repos.

11
DarkAngeL

Si vous aviez quelque chose comme ça:

var myPdfUrl = 'something'
$http.get(myPdfUrl);

Faites ceci à la place:

var myPdfUrl = 'something'  
$window.open(myPdfUrl);

Si à la place vous avez quelque chose comme ça:

$http
    .get(generatePdfUrl)
    .then(function(data){
        //data is link to pdf
    });     

Faites ceci:

$http
    .get(generatePdfUrl)
    .then(function(data){
        //data is link to pdf
        $window.open(data);
    });         
17
Mathew Berg

Peut-être que cela peut aider, dans le cas où vous avez quelque chose comme ça:

$http.get('generatePdfUrl')
  .then(function (data) {     // data is your url
      var file = new Blob([data], {type: 'application/pdf'});
      var fileURL = URL.createObjectURL(file);
  });

Ensuite, utilisez votre service dans le contrôleur et faites

$window.open(fileURL);
15
carton