Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   PDF to browser (https://javascript.ru/forum/jquery/47103-pdf-browser.html)

delta_beta 08.05.2014 16:41

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);
					}


Но открывается пустое окно. Подскажите, пожалуйста, как можно решить данную проблему?

depp 09.05.2014 20:32

по стандарту у вас вместо "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)

delta_beta 10.05.2014 12:51

в обоих случаях сохраняется .pdf документ, но содержимое пустое.

depp 10.05.2014 21:46

что показывает:
console.log(pdfText)
?

delta_beta 13.05.2014 10:50

показывает base64 encode содержимого pdf

delta_beta 13.05.2014 11:30

но если использовать вариант с сылкой, то работает! спасибо!
а в первом случае выводится внизу документа строка data:application/pdf;base64 и код пдф. но немного подредактировав, все получилось!


Часовой пояс GMT +3, время: 23:09.