Предотвращение автоматической загрузки PDF по idm с помощью pdf.js

Я использую PDF.Js для вставки PDF файла для предварительного просмотра, и я удалил script для загрузки и открытия файлов из viewer.js, но когда я тестирую страницу и файл PDF, попробуйте показать, Internet Download Manager загрузит ее и прервет предварительный просмотр. После поиска я обнаружил, что использование object вместо iframe может решить проблему, но это не работает, просмотрщик pdf оказался белым, что я могу сделать, чтобы предотвратить автоматическую загрузку? или другим способом (плагин), чтобы показать содержимое файла PDF.

<iframe 
  class="pdf" 
  webkitallowfullscreen="" 
  mozallowfullscreen="" 
  allowfullscreen="" 
  frameborder="no" 
  width="'.$width.'" 
  height="'.$height.'" 
  src="'.$baseurl.'/assets/pdf/web/viewer.html?file='.urlencode($pdf_url).'" 
  data-src="'.$pdf_url.'">
  '.$pdf_url.'
</iframe>

enter image description here

Ответы

Ответ 1

Это не что-то, что связано с проблемой разработки, это что-то, что связано с пользовательской environement.

Проблема:

Используя IDM, любой URL-адрес, который заканчивается носителем (например, *.JPG, *.PNG, *.MP4, *.WMV, *.PDF..etc), будет загружен автоматически, Однако, с другой стороны, если у пользователя не установлено IDM, файл будет немедленно просматриваться в окне браузера.

Возможные решения:

  • Удалить PDF-расширение Handler из IDM, чтобы предотвратить автоматическую загрузку, и я думаю, что изображение объясняет это очень хорошо.

IDM prevent file types from being handled

  1. Измените заголовок ответа для вашей ссылки в формате PDF, чтобы заставить ваш браузер просматривать PDF внутри своего представления, пожалуйста, подумайте, что каждый браузер может обрабатывать ответ по-разному, более подробную информацию об этом методе можно найти здесь.

Заключительное примечание:

Как разработчик вы не должны обрабатывать каждую конкретную среду пользователя, мы предположим, что когда пользователь устанавливает определенное приложение для обработки общих файлов, то это его/ее роль для обработки этого приложения, а не роль разработчика, потому что, если вы будете следовать этому алгоритму, вы входите внутрь бесконечный цикл обработки различных пользовательских настроек.

Ответ 2

попробуйте с этим

<embed src="'.$baseurl.'/assets/pdf/web/viewer.html?file='.urlencode($pdf_url).'" type="text/html" >

Ответ 3

Судя по вашим комментариям, я бы сказал, что ваш uri может быть неправильным.
Вы можете попробовать заменить uri любым PDF файлом онлайн, чтобы убедиться, что остальная часть кода в порядке.

Если вы просто хотите вставить объект PDF, вы можете попробовать использовать файл PDFobject.js.
https://github.com/pipwerks/PDFObject
http://pdfobject.com/instructions.php

HTML

<div id="my_pdf_object"
  class="pdf" 
  webkitallowfullscreen="" 
  mozallowfullscreen="" 
  allowfullscreen="" 
  frameborder="no" 
  width="'.$width.'" 
  height="'.$height.'" 
>
  It appears you don't have Adobe Reader or PDF support in this web browser. 
  <a href="'.$baseurl.'/assets/pdf/web/viewer.html file='.urlencode($pdf_url).'">
  Click here to download the PDF</a>
</div>

JavaScript

<script type="text/javascript">
  //loads pdf files for resume
  window.onload = function (){
    var success = new PDFObject({ 
      url: "'.$baseurl.'/assets/pdf/web/viewer.html?file='.urlencode($pdf_url).'" 
    }).embed("my_pdf_object");
  };
</script>

Ответ 4

Можно предотвратить автоматическую загрузку с idm (PdfJs). IDM find extention pdf file, поэтому нам нужно преобразовать pdf файл в base-64, а затем прочитать base64 pdf в node DOM src:

1. Преобразуйте файл pdf в base64

document.getElementById('myfiles').addEventListener('change', function(event){

		var input = document.getElementById("myfiles"); 

		var fReader = new FileReader();
		fReader.readAsDataURL(input.files[0]);
		fReader.onloadend = function(event){ 
    document.getElementById("base64").innerHTML = event.target.result;
		 console.log(event.target.result); 
     
		}
	});
<input type="file" name="files" id="myfiles" value=""><br>
<textarea id="base64" cols="50"></textarea>

Ответ 5

Просто удалите расширение .pdf из основного файла. IDM не может определить, что это. но браузер справится с этим по-своему.