【PDF-js】移動端使用pdfjs預覽pdf文件


需求:
在預覽這個pdf文件時候,PC端可以直接 放地址, 在手機端直接放會變成下載,所以就要使用 pdfjs 來實現

背景:
文件地址: http://www.alioss.test.com/files/laofan.pdf
我的項目域名: http://www.test.com

官網地址: http://mozilla.github.io/pdf.js/
下載穩定版本

目錄結構如下。你要先訪問 web目錄里的 viewer.html

把文件放到你得項目靜態文件里
那么你訪問 www.test.com/web/viewer.html , 如下圖

項目中配置使用

nginx 配置反向代理,此時就代表 /alioss/ 在項目中就代替了 http://www.alioss.test.com


    #代理第三方文件訪問
    location /alioss/ {
      proxy_pass http://www.alioss.test.com/;
    }

php文件接收訪問的文件 ,格式為:http://www.test.com/file_view?file_url=http://www.alioss.test.com/files/laofan.pdf

      /**
     *預覽
     * 依然范兒特西
     */
    public function file_view(Request $request)
    {
        
        $file_url = input("file_url");
        $parts = parse_url($file_url);
        //此處的  /alioss/ 代表 nginx反向代理的名字替換,$parts 里邊有了 / , 所以此處寫 /alioss
        $fally_path_url = '/alioss'.$parts['path'];
        $this->assign("file_url",$fally_path_url);
        return $this->fetch('webview/file_view');
   }


簡單使用就用這個就可以

<iframe  src="__CPLUGINS__/pdfjs-2.4.456/web/viewer.html?file={$file_url}"   frameborder="0" style="width: 100vw; height:100vh;"></iframe>

html 完整代碼

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
    <title>文件預覽</title>
</head>

<body style="margin: 0;">
    <iframe id="xy" src="__CPLUGINS__/pdfjs-2.4.456/web/viewer.html?file={$file_url}"   frameborder="0" style="width: 100vw; height:100vh;"></iframe>
</body>
    <script type="text/javascript" src="__MJS__/jquery-2.1.0.js" ></script>
    <script type="text/javascript">
        $('#xy').load(function(){
            $('#xy').contents().find('body').find('#secondaryToolbarToggle').hide();
            $('#xy').contents().find('body').find('#viewFind').hide();
            $('#xy').contents().find('body').find('#sidebarToggle').hide();
            $('#xy').contents().find('body').find('#toolbarViewerMiddle').css('float','right');
        });
    </script>
</html>

過程中出現的問題

問題1 : file origin does not match viewer

因為我是本服務器 遠程訪問 阿里oss 的文件資源, 出現跨域,
解決辦法 網上說是 /web/viewer.js 要注釋掉判斷信息

 if (origin !== viewerOrigin && protocol !== "blob:") {
       // throw new Error("file origin does not match viewer's");
  }

注釋之后,還是報錯跨域,
解決辦法: nginx代理 模式

問題2 頁面顯示不全,之后頭部一點,下邊一大片空白,
解決辦法: 在 iframe 里邊 加 行內樣式

frameborder="0"  style="width: 100vw; height:100vh;"

問題 3 : 整個頁面左右晃動
解決辦法,body里 加

 style="margin: 0;"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM