У меня есть PHP-скрипт, который отображает PDF внутри элемента объекта. Плагины Adobe Reader прекрасно справляются с этим, и с помощью панели инструментов Adobe пользователи могут печатать встроенный PDF-файл. Однако некоторые пользователи настаивают на использовании меню «Файл» (98% пользователей в Internet explorer 8) для печати документа HTML. Используя это меню File-> Print в IE, документ HTML распечатывается без содержимого (PDF) элемента OBJECT . ( Предварительный просмотр ) Использование этого метода для печати документа в Chrome или FF приводит к печати только данных, отображаемых в окне просмотра объектов. То есть, частичный объект, а не фактический PDF.
Я просмотрел и прочитал несколько связанных вопросов по StackOverflow, но ничего конкретного в этой ситуации или случае. Некоторые из этих «решений» используют метод или функцию Javascript для печати содержимого с помощью кнопки или ссылки. Если я не могу заставить своих пользователей использовать панель инструментов Adobe в браузере для печати PDF, я сомневаюсь, что они передумают, чтобы использовать кнопку с надписью «PRINT».
Почему метод File-> Print в IE приводит к пустой странице? Есть ли способ заставить браузер печатать содержимое элемента Object при использовании меню «Файл-> Печать». Нет JS-хаков, кнопок, ссылок на «нажмите здесь», iframe или предложение «отобразить его в строке» и т. Д.
Для справки ниже приведен код для этого «Просмотр PDF» (который, опять же, отлично работает, чтобы отображать содержимое PDF в элементе объекта, никаких проблем).
echo " <html> <head> <title>View PDF</title> </head> <body scroll='no'> <object data='getFile.php?f={$file_hash}' type='application/pdf' width='100%' height='100%' > <h2>Error: No PDF plugin</h2> <p>The browser does not have a PDF viewer installed. In order to view the PDF in the browser, please <a href='http://get.adobe.com/reader'>download Adobe Reader</a>. </p> </object> </body> </html>";
Насколько я знаю, для решения этой проблемы нет решения. Я видел, как некоторые разработчики «решают» проблему, создавая файл PDF, который автоматически показывает диалог печати при открытии
Другой вариант – показать файл PDF в новом окне, который удаляет панель инструментов и меню, чтобы избежать визуальной неоднозначности.
Window.open(url, "_blank", "location=0,menubar=0,toolbar=0");
Я не знаю, работает ли этот, но вы можете попробовать обнаружить событие печати в браузере , а затем вызвать pdfDoc.printAll();
на вашем объекте Acrobat Reader.
Откройте только PDF – без HTML и объекта. Тогда File-> Print всегда будет работать.
Конечно, это зависит от конфигурации браузера и читателя, если PDF отображается в браузере или открывается в новом окне Reader