Предотвращение автоматической загрузки 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]()
- Измените заголовок ответа для вашей ссылки в формате 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 не может определить, что это. но браузер справится с этим по-своему.