2017-07-31 1 views
2

J'ai besoin de télécharger un fichier en cliquant sur un lien sur la page. Sur le bouton cliquez sur, appelé un fichier js de téléchargement de HERE.Download.js ne fonctionne pas pour le type mime pdf

Mais cela ne fonctionne pas bien avec mimetype application/pdf. De l'aide?

Peut essayer HERE démo autonome pour tester download.js.

download("hello world", "dlText.pdf", "application/pdf"); 

Répondre

2

On dirait que vous voulez JsPDF qui est dédié à résoudre des problèmes PDF.

Tout ce que vous devez faire est d'utiliser la fonction setText()

var doc = new jsPDF(); 
 
doc.text(20, 20, 'Hello world!'); 
 
doc.save('is_this_what_you_are_looking_for.pdf');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/0.9.0rc1/jspdf.min.js"></script>

+0

Merci Suresh. Donc, quand je suis, je reçois l'erreur suivante. spdf.js: 471 Erreur dans la fonction Object .: saveAs n'est pas défini ReferenceError: saveAs n'est pas défini dans Object. (jspdf.js: 962) à Object .__ safeCallWrapper [en sortie] (jspdf.js: 465) à Object.API.save (jspdf.js: 2029) at Object.success (detail.js: 287) at i (jquery-3.2.1.min.js: 2) à Object.fireWith [as resolveWith] (jquery-3.2.1.min.js: 2) à A (jquery-3.2.1.min.js: 4) à XMLHttpRequest . (jquery-3.2.1.min.js: 4) –

+1

Ajouter cela aussi? https://raw.githubusercontent.com/eligrey/FileSaver.js/master/FileSaver.js –

+0

Oui, cela fonctionne pour moi. Merci. –

0

Vous devez utiliser le type de données BLOB, vous devez changer votre code comme,

download(new Blob(["hello world"]), "dlText.pdf", "application/pdf"); 

Hope this helps!

+0

Non. Cela ne fonctionne pas non plus. Vous pouvez vérifier sur l'URL autonome ici. http://pagedemos.com/sxks39b72aqb/1 –

+0

Après avoir téléchargé accéder au fichier PDF qui est téléchargé, le fichier est corrompu. @David R –

+0

Et selon le plugin, il accepte aussi la chaîne. Ce n'est pas obligatoire d'avoir le type blob. –

1

On dirait qu'il n'y a pas du tout besoin de Javascript. Résolu côté serveur. Dans le cas où quelqu'un cherche une solution Java côté serveur.

Le contrôleur a travaillé sans aucune erreur.

public static void downloadFile(
      final HttpServletResponse response, 
      final String fileName, 
      final String fileType, 
      final byte[] decodedDocument) throws Exception{ 

     /* Set the file properties*/ 
     if(fileType == null) { 
      response.setContentType("application/octet-stream"); 
     } else { 
      response.setContentType(fileType); 
     } 
     response.setHeader("Content-Disposition", "attachment; filename=" + fileName); 
     response.setHeader("Pragma", "no-cache"); 
     response.setHeader("Cache-Control", "no-cache"); 

     /* Convert bytes to stream of objects*/ 
     InputStream is = new ByteArrayInputStream(decodedDocument); 

     /*Download copying the content to destination file*/ 
     IOUtils.copy(is, response.getOutputStream()); 
     response.flushBuffer(); 
    }