web-dev-qa-db-fra.com

Comment afficher les PDF encodés en base64?

Je dois afficher le fichier PDF base64 dans un nouvel onglet. J'utilise le code ci-dessous

 var windo = window.open("", "");  
 var objbuilder = '';
 objbuilder += ('<embed width=\'100%\' height=\'100%\'  src="data:application/pdf;base64,');
 objbuilder += (fileData);
 objbuilder += ('" type="application/pdf" />');
 windo.document.write(objbuilder); 

Il fonctionne dans FireFox et ne fonctionne pas dans Chrome et IE. J'ai même essayé avec une balise, mais le même résultat, fonctionnant dans FF mais pas dans Chrome et IE .

Je regarde ci-dessous JsFiddles, pour qui travaillent dans FF mais pas dans Chrome,

http://jsfiddle.net/yLx2W/

http://jsfiddle.net/yLx2W/1/

Mon Chrome version est la suivante: version 54.0.2840.99 m

Version FireFox: 49.0.2

Est-ce que quelqu'un a une idée, s'il vous plaît partager.

Merci d'avance

17
dnyaneshwar

Cela devrait fonctionner avec Chrome vous pouvez utiliser

<iframe src="data:base64...">

<object data="data:base64...">

J'ai le même problème avec C'EST-À-DIRE : c'est impossible d'afficher un pdf avec un base64 chaîne.

Je devais générer des fichiers temporaires sur le serveur pour les afficher avec C'EST-À-DIRE il seulement afficher le fichier existant en utilisant un chemin.

Vous pouvez toujours utiliser bibliothèque JS pour afficher votre pdf comme PDF.js.

8
Alexis

pour ceux qui ne peuvent toujours pas le faire, j'ai trouvé ceci dans la réponse de quelqu'un d'autre, mais je ne me souviens plus qui ...

var objbuilder = '';
objbuilder += ('<object width="100%" height="100%" 
data="data:application/pdf;base64,');
objbuilder += (myBase64string);
objbuilder += ('" type="application/pdf" class="internal">');
objbuilder += ('<embed src="data:application/pdf;base64,');
objbuilder += (myBase64string);
objbuilder += ('" type="application/pdf"  />');
objbuilder += ('</object>');

var win = window.open("#","_blank");
var title = "my tab title";
win.document.write('<html><title>'+ title +'</title><body style="margin-top: 
0px; margin-left: 0px; margin-right: 0px; margin-bottom: 0px;">');
win.document.write(objbuilder);
win.document.write('</body></html>');
layer = jQuery(win.document);

de cette façon, nous ouvrons le pdf dans un nouvel onglet.

11
CHACO