Download di file PDF tramite richiesta XHR

È totalmente imansible scaricare un file PDF attraverso una richiesta XHR? So che ci sono molte altre discussioni già su questo argomento, ma purtroppo non sono ancora soddisfatto di loro. Sto usando AngularJs e faccio una richiesta usando il suo metodo $Http . Non sta restituendo alcun popup di download di file. Ma se premo con lo stesso URL in una nuova finestra del browser, ricevo un popup. Ho già provato un work-arround e funziona bene ie document.location.href = url; ma se lo faccio, non sono in grado di mostrare l’immagine in attesa fino al momento in cui il popup di download è pronto ed è apparso. Quindi il lavoro intorno non è abbastanza per me. Mi piacerebbe farlo con un modo genuino attraverso una richiesta al server attraverso il quale posso gestire anche i flussi alternativi del risultato.

Dai un’occhiata a questo plugin JQuery jquery-file-download-plugin e qui c’è la pagina demo di questa demo del plugin. Penso che il suo inserimento dinamico di iframe su DOM e produca look and feel proprio come una richiesta AJAX. Potrebbe essere utile per te.

Dipende certamente dalle dimensioni del file PDF, ma questo sarebbe un approccio praticabile se il PDF non è troppo grande:

  1. Mostra la “immagine in attesa” e scarica il PDF usando $http .

     $http.get('http://my.example.com/foo.pdf').success(function(pdfData) { ... do something with pdfData ... }); 
  2. Convertire la codifica pdfData in Base64 e utilizzare uno schema URI di dati per creare un URL per il file PDF scaricato.

  3. Reindirizza a quell’URL.