Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.05.2014, 16:41
Новичок на форуме
Отправить личное сообщение для delta_beta Посмотреть профиль Найти все сообщения от delta_beta
 
Регистрация: 08.05.2014
Сообщений: 4

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


Но открывается пустое окно. Подскажите, пожалуйста, как можно решить данную проблему?
Ответить с цитированием
  #2 (permalink)  
Старый 09.05.2014, 20:32
Профессор
Отправить личное сообщение для depp Посмотреть профиль Найти все сообщения от depp
 
Регистрация: 22.04.2014
Сообщений: 151

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

Последний раз редактировалось depp, 09.05.2014 в 20:34.
Ответить с цитированием
  #3 (permalink)  
Старый 10.05.2014, 12:51
Новичок на форуме
Отправить личное сообщение для delta_beta Посмотреть профиль Найти все сообщения от delta_beta
 
Регистрация: 08.05.2014
Сообщений: 4

в обоих случаях сохраняется .pdf документ, но содержимое пустое.
Ответить с цитированием
  #4 (permalink)  
Старый 10.05.2014, 21:46
Профессор
Отправить личное сообщение для depp Посмотреть профиль Найти все сообщения от depp
 
Регистрация: 22.04.2014
Сообщений: 151

что показывает:
console.log(pdfText)
?
Ответить с цитированием
  #5 (permalink)  
Старый 13.05.2014, 10:50
Новичок на форуме
Отправить личное сообщение для delta_beta Посмотреть профиль Найти все сообщения от delta_beta
 
Регистрация: 08.05.2014
Сообщений: 4

показывает base64 encode содержимого pdf
Ответить с цитированием
  #6 (permalink)  
Старый 13.05.2014, 11:30
Новичок на форуме
Отправить личное сообщение для delta_beta Посмотреть профиль Найти все сообщения от delta_beta
 
Регистрация: 08.05.2014
Сообщений: 4

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

Последний раз редактировалось delta_beta, 13.05.2014 в 11:44.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pdf файл тег embed переход на страницу sparrow Общие вопросы Javascript 4 20.01.2015 12:26
распечатать pdf Гробовщик Firefox/Mozilla 0 05.02.2014 14:29
Передача файла Browser -> Node.js -> Browser ExPande AJAX и COMET 0 20.11.2013 10:14
Overlay в iframe вместе с pdf Hoshinokoe Общие вопросы Javascript 12 27.09.2012 00:24
Android. Проверка на pdf. sergey_sholohov Мобильный JavaScript 1 28.10.2011 14:56