我正在使用PDF.Js嵌入PDF文件进行预览,我从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>
这与开发问题无关,这与用户特定的环境有关。
问题 :
使用IDM,任何以媒体扩展名结尾的URL(例如* .JPG,* .PNG,*。MP4,* .WMV,* .PDF ..等)都将自动下载,但另一方面如果用户没有如果安装了IDM,将立即在浏览器窗口中查看该文件。
可能的解决方案 :
最后注意:
作为开发人员,您不应该处理每个特定于用户的环境,我们假设当用户安装特定应用程序来处理通用文件时,处理该应用程序而不是开发人员角色是他/她的角色,因为如果您遵循此算法跳入无限循环内处理不同用户的特定设置。
尝试这个
<embed src="'.$baseurl.'/assets/pdf/web/viewer.html?file='.urlencode($pdf_url).'" type="text/html" >
只需从主文件中删除.pdf
Extension即可。 IDM无法检测到它是什么类型。但浏览器将以原生方式处理它。
根据你的评论,我会说你的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>
可以防止从idm(PdfJs)自动下载。 IDM找到扩展pdf文件,所以我们需要将pdf文件转换为base-64,然后将pdf的base64读入节点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>
2.将所有字符串base64放到txt文件中
FILENAME.TXT
3.从文件txt读取base64并过去到iframe或者使用viewer.js(PDF JS)
-iframe应该
<iframe scr="data:application/pdf,base64.....">prevent download from idm</iframe>
- 使用PDF查看器
var xhr = new XMLHttpRequest();
console.log(file);
xhr.open('GET', folderFiles+filename+".txt", true);
xhr.responseType = 'text';
xhr.onload = function(e) {
if (this.status == 200) {
PDFViewerApplication.open(this.response);
}
};
因此,IDM不会自动强制下载pdf文件,因为它无法找到特定文件。链接:https://github.com/sokhasen/ViewerPDF.git