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, время: 00:53. |