Я пытаюсь распечатать отчет в формате 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);
},