Попытка распечатать PDF-файл в iFrame, отправленный моим сервером, и получить ошибки - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь распечатать отчет в формате PDF, который генерируется моим сервером и отправляется клиенту. Я уже пробовал много вещей, включая помещение pdf в один iframe в новом окне, но я действительно хочу, чтобы pdf был загружен в iframe, который я спрятал в текущем окне и у меня был только диалог печати. показать, где пользователь может распечатать PDF. Если я помещу только один iframe с pdf внутри, то это даст мне междоменную ошибку, которую я исследовал, и я прочитал, что если вы поместите iframe с pdf внутри следующего iframe, вы можете заставить его работать. Я попытался сделать это, и теперь я получаю сообщение об ошибке: «Не удается прочитать свойство« документ »с нулевым значением». Вот мой код для функции:

printPdf: function (url) {
      //var htmlstring="<iframe onload=\"window.print()\" id=\"thisiframe\" name=\"thisiframe\"src=\"" + url + "\">" + "<script type=\"text/javascript\"> <\/script> <\/iframe>"
      var iframe1= document.createElement('iframe')
      iframe1.name='iframe1'
      iframe1.id='iframe1'
      iframe1.src=url
      var myscript1= iframe1.contentWindow.document.createElement('script')
      myscript1.type='text/javascript'
      myscript1.src='<scr' + 'ipt type="text/javascript"> printframe= function () {window.print()}; parent.tunnel(printframe()); </scr' + 'ipt>'
      iframe1.contentWindow.document.body.appendChild(myscript1)

      var iframe = document.createElement('iframe');
      iframe.name='iframe'
      iframe.id='iframe'
      var myscript = iframe.contentWindow.document.createElement('script');
      myscript.type = 'text/javascript';
      myscript.src = '<scr' + 'ipt type="text/javascript"> function tunnel(fn) {fn(); document.body.removeChild(iframe);} </scr' + 'ipt>'
      iframe.contentWindow.document.body.appendChild(myscript)
      iframe.contentWindow.document.body.appendChild(iframe1)
      document.body.appendChild(iframe);
    },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...