前端實現線上預覽pdf、word、xls、ppt等檔案

極速蝸牛發表於2018-02-08

1、前端實現pdf檔案線上預覽功能

方式一、pdf檔案理論上可以在瀏覽器直接開啟預覽但是需要開啟新頁面。在僅僅是預覽pdf檔案且UI要求不高的情況下可以直接通過a標籤href屬性實現預覽

<a href="文件地址"></a>
複製程式碼

方式二、通過jquery外掛jquery.media.js實現 這個外掛可以實現pdf預覽功能(包括其他各種媒體檔案)但是對word等型別的檔案無能為力。 實現方式: js程式碼:

<script type="text/javascript" src="jquery-1.7.1.min.js"></script>  
<script type="text/javascript" src="jquery.media.js"></script>
複製程式碼

html結構:

      <body>
          <div id="handout_wrap_inner"></div>
      </body>
複製程式碼

呼叫方式:

<script type="text/javascript">  
 $('#handout_wrap_inner').media({
		width: '100%',
		height: '100%',
		autoplay: true,
        src:'http://storage.xuetangx.com/public_assets/xuetangx/PDF/PlayerAPI_v1.0.6.pdf',
            }); 
</script>
複製程式碼

方式三、直接通過頁面內嵌iframe

$("<iframe src='"+ this.previewUrl +"' width='100%' height='362px' frameborder='1'>").appendTo($(".video-handouts-preview"));
複製程式碼

此外還可以在iframe標籤之間提供一個提示類似這樣

<iframe :src="previewUrl" width="100%" height="100%">

This browser does not support PDFs. Please download the PDF to view it: <a :href="previewUrl">Download PDF</a>

</iframe>
複製程式碼

方式四、通過標籤嵌入內容

<embed :src="previewUrl" type="application/pdf" width="100%" height="100%">
複製程式碼

此標籤h5特性中包含四個屬性:高、寬、型別、預覽檔案src! 與< iframe > < / iframe > 不同,這個標籤是自閉合的的,也就是說如果瀏覽器不支援PDF的嵌入,那麼這個標籤的內容什麼都看不到!

方式五、標籤和iframe使用差別較小

<object :src="previewUrl" width="100%" height="100%">

This browser does not support PDFs. Please download the PDF to view it: <a :href="previewUrl">Download PDF</a>

</object>
複製程式碼

除方式二以外其他都是直接通過標籤將內容引入頁面實現預覽

方式六、PDFObject

PDFObject實際上也是通過標籤實現的直接上程式碼

<!DOCTYPE html>
<html>
<head>
    <title>Show PDF</title>
    <meta charset="utf-8" />
    <script type="text/javascript" src='pdfobject.min.js'></script>
    <style type="text/css">
        html,body,#pdf_viewer{
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
        }
    </style>
</head>
<body>
    <div id="pdf_viewer"></div>
</body>
<script type="text/javascript">
    if(PDFObject.supportsPDFs){
        // PDF嵌入到網頁
        PDFObject.embed("index.pdf", "#pdf_viewer" );
    } else {
        location.href = "/canvas";
    }
</script>
</html>
複製程式碼

還可以通過以下程式碼進行判斷是否支援PDFObject預覽

if(PDFObject.supportsPDFs){
   console.log("Yay, this browser supports inline PDFs.");
} else {
   console.log("Boo, inline PDFs are not supported by this browser");
}
複製程式碼

方式七、PDF.js

PDF.js可以實現在html下直接瀏覽pdf文件,是一款開源的pdf文件讀取解析外掛,非常強大,能將PDF檔案渲染成Canvas。PDF.js主要包含兩個庫檔案,一個pdf.js和一個pdf.worker.js,一個負責API解析,一個負責核心解析。

2、word、xls、ppt檔案線上預覽功能

word、ppt、xls檔案實現線上預覽的方式比較簡單可以直接通過呼叫微軟的線上預覽功能實現 (預覽前提:資源必須是公共可訪問的)

<iframe src='https://view.officeapps.live.com/op/view.aspx?src=http://storage.xuetangx.com/public_assets/xuetangx/PDF/1.xls' width='100%' height='100%' frameborder='1'>
			</iframe>
複製程式碼

src就是要實現預覽的檔案地址 具體文件看這微軟介面文件

補充:google的文件線上預覽實現同微軟(資源必須是公共可訪問的)

<iframe :src="'https://docs.google.com/viewer?url="fileurl"></iframe>
複製程式碼

3、word檔案

XDOC可以實現預覽以DataURI表示的DOC文件,此外XDOC還可以實現文字、帶引數文字、html文字、json文字、公文等線上預覽,具體實現方法請看官方文件

下面這種方式可以實現快速預覽word但是對檔案使用的編輯器可能會有一些限制

<a href="http://www.xdocin.com/xdoc?_func=to&amp;_format=html&amp;_cache=1&amp;_xdoc=http://www.xdocin.com/demo/demo.docx" target="_blank" rel="nofollow">XDOC</a>
複製程式碼

4、excel檔案

目前excel檔案已經有了類似pdf.js那樣的解析sheet.js

總結:

1、免費純前端方式實現線上預覽word、excel、ppt最優選擇微軟線上預覽(不可編輯)

2、利用後端將檔案轉為圖片,前端以圖片形式預覽(可行方案)

3、購買線上預覽服務例如百度DOC文件服務永中I DOC VIEW

相關文章