方式一、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解析,一個負責核心解析。
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 target="_blank" rel="nofollow">XDOC</a> 復制代碼
4、excel文件
目前excel文件已經有了類似pdf.js那樣的解析sheet.js
總結:
1、免費純前端方式實現在線預覽word、excel、ppt最優選擇微軟在線預覽(不可編輯)
2、利用后端將文件轉為圖片,前端以圖片形式預覽(可行方案)
3、購買在線預覽服務例如百度DOC文檔服務、永中、I DOC VIEW等
著名:文章內容是從網上搜集資料所得;在次發表只為自己以及頭條程序員兄弟日后使用圖個方便。
覺得有用記得收藏轉發!
寫文件在編程里面應該是用的最多也最基礎的工作了吧。但是,C/C++中文件讀寫方法有很多種,各種方法的使用場景區別甚大,到底日常工作中,我們什么時候該用哪種方法呢?還是說隨便抓一種用就可以?
這篇文章就給大家分享一下C語言文件的各種方法,下一篇再分享一下C++的讀寫方法:
在window環境下,文件分別兩種,一種為文本文件(用記事本可以打開的文件,如txt、xml、html、js等),一種為二進制文件(如圖片、軟件、壓縮包等)
首先創建一個File對象,這個利用到系統庫中的fopen()函數,該函數返回一個File*類型的對象。
FILE *fopen( const char * filename, const char * mode );
第一個參數為:文件路徑;第二個參數為打開模式:這個是固定的,具體是什么意思大家可以自己去查一下,沒什么特別的,記住就好了。
1、文本文件讀寫
接下來我們讀寫一個文本文件,我新建一個test.txt文件并且讀取出內容寫進newtest.txt文件中,這里有兩組函數fgetc/fputc和fgets/fputs函數,故名意意,fgetc是讀取出一個字符,而fgets是讀取一段字符串,fputc是讀寫入一個字符,fputs寫進一段字符串。我們分別來看一下:
int main() { FILE * fpr = fopen("test.txt","r"); FILE * fpw = fopen("newtest.txt","w"); if(fpr && fpw) { while (!feof(fpr)) { char c = (char)fgetc(fpr); cout<<c; fputc(c,fpw); } } fclose(fpr); fclose(fpw); system("pause"); return 0 ; }
注意:
1、feof是判斷是否讀取到文件尾的函數,此處不用EOF來作為讀寫結束條件是因為:函數如fgetc或getc返回EOF并不一定表示文件結束,當讀取文件出錯時也會返回EOF,僅憑返回-1就認為文件結束是錯誤的;正因為如此,我們需要feof()來判斷文件是否結束,當然用feof()來判斷文件結束時也需要判斷讀取操作是否出錯,這時可以用ferror()來判斷,當其為真時表示有錯誤發生。在實際的程序中,應該每執行一次文件操作,就用用ferror函數檢測是否出錯。
2、fgetc()返回的是int,如果要在屏幕上打印出字符的話需要轉換為char;
上面是一個字符一個字符的讀,下面一段一段的讀:
FILE * fpr = fopen("test.txt","r"); FILE * fpw = fopen("newtest.txt","w"); if(fpr && fpw) { while (!feof(fpr)) { char* buff = new char[1024]; char* s = fgets(buff,3,fpr); cout<<s; fputs(s,fpw); } } fclose(fpr); fclose(fpw);
這個方法個人不是很推薦,因為在使用過程中經常會報錯,這里我如果將以此讀取的字符串長度由3改為2或者1就會報錯,這個我也搞不清為什么,如果有知道的朋友可以評論幫我解答一下;
C語言讀寫二進制文件通過庫函數fread和fwrite實現:
size_t fread(void *buff, size_t sizeofElement, size_t count, FILE *stream);
size_t fwrite(const void *ptr, size_t sizeofElement, size_t count, FILE *stream);
參數解釋:buff:緩存區地址
sizeofElement:每次讀/寫的數據大小
count:要多去多個個sizeofElement大小的數據
stream:文件指針
現在我們來讀一張神仙姐姐的圖片test.ipg并且將讀取到的內容寫進newtest.jpg,然后查看是否能打開。
int main()
{
FILE * fpr = fopen("test.jpg","rb");
FILE * fpw = fopen("newtest.jpg","wb");
char* buff = new char[50];
int len = 50;
while (len==50)
{
len = fread(buff,sizeof(char),50,fpr);
fwrite(buff,sizeof(char),len,fpw);
}
fclose(fpr);
fclose(fpw);
system("pause");
return 0 ;
}
運行結果,打開newtest.jpg,結果完美呈現神仙姐姐。
注意以下幾點:
1、文件打開方式,不管是讀還是寫都需要在后面加b,b就是binary二進制的意思,所以這里打開方式是“日本”和“wb”;
2、寫入fwrite中的count一定要注意,你的緩存區存了多大的內容這里就寫多大的內容,不然會導致文件損壞,因為我定的是每次讀取50個char大小的內容,但是文件大小不可能是50的整數啊,最后一次讀取的話他肯定會小于50,并且大小不能超過緩存區的大小;
在打開任何文件的時候,都會有一個文件內部位置指針。為什么要在這里介紹這個呢?我們大部分讀取文件的時候都是不用去管他的,因為我們基本很少有讀取固定位置開始固定長度的需求,都是從開始一直讀取到文件結束。
其實我們上面用到的那么多函數,位置指針在文件被打開的時候位置指針是在零為,每讀取一次這個指針就會往后面移動你讀取的數據兩個距離。
這里有三個函數:
1、int fseek(FILE *stream, long int offset, int where)這個函數的作用是將文件位置指針從指定位置(where:系統有定義三個宏SEEK_SET:文件頭、SEEK_CUR當前指針位置、SEEK_END文件尾,當然你也可以自己指定位置,比如100、50這樣)移動個offset個位置(正數往后移,負數往前移);
2、void rewind(FILE *stream)這個很簡單,將位置指針指向文件開頭;
3、long int ftell(FILE *stream)這個也很簡答,告訴你當前位置指針的位置(相對于文件頭);
這可以干嘛呢?最實用的,當然是快速的獲取文件長度啊:
我們只需要用fseek將指針移動到文件尾,再用ftell求出當前指針位置就是了:
fseek(fpr,OL,SEEK_END);注意這里的offset一定要給0
ftell(fpr);
TML 實例
<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>菜鳥教程(runoob.com)</title></head><body><h1>我的第一個標題</h1><p>我的第一個段落。</p></body></html>
實例解析
DOCTYPE 聲明了文檔類型
位于標簽 <html> 與 </html> 描述了文檔類型
位于標簽 <body> 與 </body> 為可視化網頁內容
位于標簽 <h1> 與 </h1> 作為一個標題使用
位于標簽 <p> 與 </p> 作為一個段落顯示
<!DOCTYPE html> 在HTML5中也是描述了文檔類型。 |
什么是HTML?
HTML 是用來描述網頁的一種語言。
HTML 指的是超文本標記語言: HyperText Markup Language
HTML 不是一種編程語言,而是一種標記語言
標記語言是一套標記標簽 (markup tag)
HTML 使用標記標簽來描述網頁
HTML 文檔包含了HTML 標簽及文本內容
HTML文檔也叫做 web 頁面
HTML 標簽
HTML 標記標簽通常被稱為 HTML 標簽 (HTML tag)。
HTML 標簽是由尖括號包圍的關鍵詞,比如 <html>
HTML 標簽通常是成對出現的,比如 <b> 和 </b>
標簽對中的第一個標簽是開始標簽,第二個標簽是結束標簽
開始和結束標簽也被稱為開放標簽和閉合標簽
<標簽>內容</標簽>
HTML 元素
"HTML 標簽" 和 "HTML 元素" 通常都是描述同樣的意思.
但是嚴格來講, 一個 HTML 元素包含了開始標簽與結束標簽,如下實例:
HTML 元素:
<p>這是一個段落。</p>
Web 瀏覽器
Web瀏覽器(如谷歌瀏覽器,Internet Explorer,Firefox,Safari)是用于讀取HTML文件,并將其作為網頁顯示。
瀏覽器并不是直接顯示的HTML標簽,但可以使用標簽來決定如何展現HTML頁面的內容給用戶:
HTML 網頁結構
下面是一個可視化的HTML頁面結構:
<html>
<head>
<title>頁面標題</title>
</head>
<body>
<h1>這是一個標題</h1>
<p>這是一個段落。</p>
<p>這是另外一個段落。</p>
</body>
</html>
只有 <body> 區域 (白色部分) 才會在瀏覽器中顯示。 |
HTML版本
從初期的網絡誕生后,已經出現了許多HTML版本:
版本 | 發布時間 |
---|---|
HTML | 1991 |
HTML+ | 1993 |
HTML 2.0 | 1995 |
HTML 3.2 | 1997 |
HTML 4.01 | 1999 |
XHTML 1.0 | 2000 |
HTML5 | 2012 |
XHTML5 | 2013 |
<!DOCTYPE> 聲明
<!DOCTYPE>聲明有助于瀏覽器中正確顯示網頁。
網絡上有很多不同的文件,如果能夠正確聲明HTML的版本,瀏覽器就能正確顯示網頁內容。
doctype 聲明是不區分大小寫的,以下方式均可:
<!DOCTYPE html>
<!DOCTYPE HTML>
<!doctype html>
<!Doctype Html>
通用聲明
HTML5
<!DOCTYPE html>
HTML 4.01
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
XHTML 1.0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
查看完整網頁聲明類型 DOCTYPE 參考手冊。
中文編碼
目前在大部分瀏覽器中,直接輸出中文會出現中文亂碼的情況,這時候我們就需要在頭部將字符聲明為 UTF-8。
HTML 實例
<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>頁面標題</title></head><body><h1>我的第一個標題</h1><p>我的第一個段落。</p></body></html>
如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!
*請認真填寫需求信息,我們會在24小時內與您取得聯系。