2013-11-19 17 views
0

Я знаю, что есть много вопросов об этом, но я тестирую все и не исправляю свою проблему. У меня есть следующий код:Печать pdf с javascript

var datauri = //PDF in base64 
popup = window.open("", "Your PDF","width=1024,height=768,resizable=yes,scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no,id='printPDF'");  
popup.document.location.href = datauri;//show pdf in other page 
popup.print();//print pdf 

Но, когда я напечатать PDF, страница появляется пустой, но когда я закрываю окно печати, показать PDF, я попытался с большим количеством вещей, но ничего не работает , пожалуйста, помогите мне :(

+0

Можете ли вы 1) правильно форматировать код (упрощает автоответчик, хотя я могу расшифровать то, что там), 2) скажите, какой ОС, браузер и плагин PDF вы используете? – ayke

ответ

0

Ой, подождите минутку, я думаю, я понимаю, что может ошибется.

переменная datauri фактически является URL из всплывающего окна. Но вы используете его неправильно.

Прежде всего, возьмите посмотрите на documentation.

var windowObjectReference = window.open(strUrl, strWindowName[, strWindowFeatures]); 

Как вы можете видеть, первый аргумент strUrl, URL для нового всплывающего окна. Вы даете пустой аргумент, что не очень хорошо для начала.

Что происходит, вероятно, это:

  1. Всплывающее получает создан.
  2. URL-адрес данных передается во всплывающее окно. PDF начинает загрузку в фоновом режиме.
  3. Открывается диалоговое окно печати, в котором обнаружен пустой документ (файл еще не загружен) и, таким образом, печатает пустую страницу.
  4. PDF заканчивает загрузку, после чего вы можете ее распечатать (после того, как вы отпустили первое всплывающее окно).

Таким образом, вместо того, чтобы сделать это:

popup.document.location.href = datauri; 

Вы должны пройти datauri в качестве первого аргумента window.open, что пустая строка в вашем фрагменте кода.

Надеюсь, это поможет.

+0

Позвольте мне проверить ... и я буду комментировать, что произойдет ... спасибо :) –

+0

Я пробовал с этим кодом, но не показывал окно для печати :(, любая идея? var datauri = // PDF IN BASE6 popup = window.open (datauri, «Details of Patients», «width = 1024, height = 768, resizable = yes, scrollbars = yes, toolbar = no, location = no, directories = no, status = no, menubar = no , copyhistory = no, id = 'printPDF' "); popup.print(); –

+0

Хорошо, тогда это, вероятно, нуждается в лучшем решении. Вы можете попробовать следующее:' popup.addEventListener ('load', function() {popup.print()}); '.Это по-прежнему немного хакерское, но это может сработать. – ayke

Смежные вопросы