PDF to browser
Добрый день! нужно вывести содержимое pdf в отдельном окне. Содержимое передается с сервера аяксом в виде кода base64.
Были попытки сделать так:
var pdfText = (data.content);
var template = '<embed width=100% height=100%'
+ ' type="application/pdf"'
+ ' src="data:application/pdf,base64;'
+ (escape(Base64.decode(pdfText)));
+ '"></embed>';
//var template = "<object type='application/pdf' data= '" + jsonString + "'>";
var windowPrint,
objBrowse = window.navigator;
if(objBrowse.appName == "Opera"){
windowPrint = window.open('', '_blank', 'width=800,height=600,resizable=yes,scrollbars=yes,status=yes');
} else {
windowPrint = window.open('', '_blank');
}
windowPrint.document.write(template);
windowPrint.document.close();
windowPrint.focus();
setTimeout(function(){
windowPrint.print();
windowPrint.close();
}, 500);
}
Но открывается пустое окно. Подскажите, пожалуйста, как можно решить данную проблему? |
по стандарту у вас вместо "data:application/pdf,base64;"
должно быть "data:application/pdf;base64," точку с запятой и запятую местами перепутали. потом если вы полчили в base64 код, и пытаетесь его загрузить как ссылку, то декодировать его не надо. то есть функция Base64.decode не используется в этом случае. а если закодировать надо, то тогда encode уж.
var print = window.open('data:application/pdf;base64,'+pdfText, "print", "width=800,height=600,resizable=yes,scrollbars=yes,status=yes");
print.print();
print.close();
если не сработает, то можно открывать как обычную ссылку:
$('a').attr('href','data:application/pdf;base64,'+pdfText)
|
в обоих случаях сохраняется .pdf документ, но содержимое пустое.
|
что показывает:
console.log(pdfText)? |
показывает base64 encode содержимого pdf
|
но если использовать вариант с сылкой, то работает! спасибо!
а в первом случае выводится внизу документа строка data:application/pdf;base64 и код пдф. но немного подредактировав, все получилось! |
| Часовой пояс GMT +3, время: 19:46. |