I have an iframe which needs point directly to a PDF file (not a page with a PDF):
<iframe id="ecard-pdf" name="ecard-pdf" style="position: absolute;" src="/profile.pdf"> </iframe>
I want to be able to print the PDF in this iFrame
I have found several solutions in other questions that do not fit my needs:
However, it seems that FireFox and IE can't do this if the iframe's src points directly to a PDF and not to a page wrapped around the PDF.
Firefox:
Instead of printing, it displays this dialog: "Prevent this page from creating additional dialogues" with "OK" and "Cancel" buttons, neither of which prints the PDF.
IE:
just ignores my attempts to print using the above methods.
Question:
How can I allow users to print the PDF in the iFrame no matter what browser they are using?
Right-click on the link in the href attribute and click Copy link address. Create a new Text content block. Click the Embed Media icon and embed the HTML code in an iframe that points to the PDF URL you noted in step 3. Click the checkmark to see the PDF displayed in the newly created iframe.
All you need to do is add #view=fitH to the end of the source attribute. That's it! fitH stands for fit horizontal, and this will make the PDF in our iframe fit the width of the screen.
Due to its wide compatibility, the iframe tag is widely used for embedding pdf. A browser that does not support PDF documents or the object tag can also use this tag to embed a pdf HTML code.
I have struggled a bit to find a solution that works for both IE and Chrome. This works for me:
$(function() { var ua = window.navigator.userAgent; var msie = ua.indexOf('MSIE '); var trident = ua.indexOf('Trident/'); var edge = ua.indexOf('Edge/'); var url = '/url/to/file.pdf'; var pdf =''; var style = 'position:fixed; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%; border:none; margin:0; padding:0; overflow:hidden;'; if(msie > 0 || trident > 0 || edge > 0){ pdf = '<object data="' + url + '" name="print_frame" id="print_frame" style="' + style + '" type="application/pdf">'; } else{ pdf ='<iframe src="' + url + '" name="print_frame" id="print_frame" style="' + style + '"></iframe>'; } $(document.body).append(pdf); setTimeout(function(){ window.frames["print_frame"].focus(); window.frames["print_frame"].print(); },2000); });
...cheers.
As suggested in this answer for a similar question, you could do this:
window.frames.pdfFrame.print();
This should solve your problem.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With