使用pdf.js 實現(xiàn)pdf文件預覽下載、更改預覽title及下載文件名。

背景:pdf文件存儲在服務端文件名都是id命名的。使用chrome自帶的文件預覽下載時導出的文件名也是id.pdf。需要下載的文件名是源文件上傳時的文件名。

方案:pdf.js 修改部分源碼

  1. 下載pdf.js

2.將下載好的文件中的build和web拷貝到vue項目的public文件夾下


image.png

3.修改viewer.js的getPDFFileNameFromURL方法

function getPDFFileNameFromURL(url) {
  // 添加如下三行代碼
  let customUrl = decodeURIComponent(window.location.href)
  let filename = new URL(customUrl).searchParams.get('filename') || ''
  if (filename) return filename

  var defaultFilename = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'document.pdf';
  if (isDataSchema(url)) {
    console.warn('getPDFFileNameFromURL: ' + 'ignoring "data:" URL for performance reasons.');
    return defaultFilename;
  }
  var reURI = /^(?:(?:[^:]+:)?\/\/[^\/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
  var reFilename = /[^\/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
  var splitURI = reURI.exec(url);
  var suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);
  if (suggestedFilename) {
    suggestedFilename = suggestedFilename[0];
    if (suggestedFilename.indexOf('%') !== -1) {
      try {
        suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];
      } catch (ex) {}
    }
  }
  return suggestedFilename || defaultFilename;
}

4.使用的時候url上拼接上filename參數(shù)

const href = pdf文件資源路徑
const filename = 需要下載的文件名
window.open(`./pdf/web/viewer.html?file=${encodeURIComponent(href)}&filename=${filename}`);
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容