欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript for pdf下載

張吉惟1年前7瀏覽0評論

對于網站中的PDF文檔,用戶下載常常需要點擊鏈接,然后打開瀏覽器的默認查看器進行操作。但對于一些需要用戶保存或者長期參考的資料,PDF下載成為了更加常見的需求。這時候,Javascript可以提供一些便利的方法來方便用戶進行文件下載。

文件下載最簡單的方式就是通過a標簽的download屬性,即可直接將文件下載至本地。例如:

<a href="example.pdf" download>Download PDF</a>

這樣的寫法即可直接通過點擊鏈接將example.pdf文件保存至本地。不過這種方式有其局限性,首先并不適用于IE瀏覽器,而且如果文件名稱過于復雜時,下載下來的文件名會過于簡化,可能不滿足需求。

所以對于下載PDF文件,常用的方法為使用JS創建Blob對象進行下載。Blob對象表示一個不可變、原始數據的類文件對象,被定義為在網格中處理二進制數據,因此更加符合PDF文件的特點。例如:

// 獲取文件地址
var fileUrl = 'example.pdf';
// 發送請求,獲取PDF文件數據
fetch(fileUrl)
.then(response =>response.blob())
.then(blob =>{
// Blob對象創建
var downloadLink = document.createElement('a');
downloadLink.href = window.URL.createObjectURL(blob);
downloadLink.download = 'newFileName.pdf';
downloadLink.click();
})

以上代碼通過fetch請求獲取文件數據,并使用createObjectURL創建Blob對象。這樣便可以直接創建a標簽并下載到本地。在downloadLink中的download屬性可以進行修改,這樣可自定義生成的文件名,便于用戶進行長期參考。

在代碼注釋中可以看到其中使用了ES6的新方法,fetch來獲取文件數據。但這種方法在IE瀏覽器中不適用,可以使用XMLHttpReqeust實現相同的功能。需要實現頁面加載時的判斷,以決定使用哪一種方案:

var isIE = navigator.userAgent.indexOf('Trident') >-1;
// 根據瀏覽器類型選擇不同方法
if (isIE) {
var xhr = new XMLHttpRequest();
xhr.open('GET', fileUrl, true);
xhr.responseType = 'blob';
xhr.onload = function() {
if (this.readyState == 4 && this.status == 200) {
var blob = new Blob([this.response], { type: 'application/pdf' });
var downloadLink = document.createElement('a');
downloadLink.href = window.URL.createObjectURL(blob);
downloadLink.download = 'newFileName.pdf';
downloadLink.click();
}
};
xhr.send();
} else {
fetch(fileUrl)
.then(response =>response.blob())
.then(blob =>{
var downloadLink = document.createElement('a');
downloadLink.href = window.URL.createObjectURL(blob);
downloadLink.download = 'newFileName.pdf';
downloadLink.click();
})
}

以上代碼使用根據當前瀏覽器選擇請求方式的方式進行下載。當檢測到用戶使用IE瀏覽器時,使用XMLHttpRequest;否則使用上述的fetch請求進行處理。可以根據需求在程序中添加判斷,選擇不同方式進行文件處理。

以上是JS通過Blob對象進行PDF文件下載的幾種方法,使用時需要根據頁面需求進行調整,選擇最為適用的處理方式。在進行文件下載時,需要注意瀏覽器的兼容性以及請求方式的選擇,以避免不必要的錯誤。同時,需要注意文件名的設置和文件大小的檢測,確保下載的文件能夠滿足用戶的需求。