MVC应用程序实现文件库(FlexPaper)
很久之前Insus.NET在實現了《FlexPaper實現文檔在線瀏覽》http://www.cnblogs.com/insus/archive/2011/07/21/2112369.html。 當時也只是實現了顯示而已,也沒有實現在線轉換功能。
現在,Insus.NET已經從asp.net轉向了asp.net MVC應用程序開發了。因此再想以MVC應用程序來實現文檔庫的功能。由于新版本的FlexPaper無法屏蔽打印的功能,因此還是用回來原來的FlexPaper組件,也意味使用前一篇的一些類庫與文件。不過下載下來之后,不能直接使用,需要修改一些路徑與參數。
在MVC應用程序中,不能跟asp.net一樣,使用Literal控件來傳遞參數了,需要考慮到傳遞參數給js類,為了不直接傳遞真正的文件名給js,還得需要做另外處理。這樣做是為了讓用戶看到指向地址,使用地址來下載文檔 。
?
OK,開始吧,不過還得準備準備。
不管是用戶上傳的PDF文件是存儲在數據庫中,還是應用程序中的某一個文件夾中,我們是先得到找到它的 ID,此ID既可以是整數,也可以是字符串,只是是唯唯一性即可。
從前一篇下載到的源程序,把它放在MVC應用程序中,如:
?
為了屏蔽打印功能,請建議使用上圖中高亮這個文件。如果你不想屏蔽的話,建議直接是官網下載最新版本。另外InsusDocumentVieewer.swf這個外框顯示格式文件,也移至js這個目錄中來,方便軟件維護與管理,區別于前一篇是放在swf目錄下。還要打開它,修改一下里面的參數路徑:
另外,pdf2swf.exe文件,放在Bin目錄之下:
這個pdf2swf.exe你可以使用最新版本的。舊的肯定沒有問題。它是從SWFTools網站下載。下載之下,它是無法在windows 8和windows 2008 R2的64位下安裝。但你可以在一臺客戶端xp或是windows7下安裝,然去安裝目錄,把pdf2swf.exe拷貝出來。
還有一個要準備的,是在MVC應用程序下,創建一個Temp目錄。此目錄是存儲臨時轉換的swf文件,或是你的pdf是二進制數據流的,生成pdf時,也是在此temp臨時目錄進行。
準備好了,此次演示,Insus.NET是以PDF文件存儲在某一個文件夾,但它的一些基本信息是存在數據庫表中。
先創建一個model:
這個model有兩個屬性,一個是ID,一個是swfFile。前者是用戶在地址欄看到的ID,根據這個ID可以在表中找到PDF的路徑或是存儲在數據庫的二進制流數據。后者是將是轉換為swf文格格式的文件名。
在Entities目錄下,創建一個實體:
?
?此實體,即是把PDF文件或是二進制數據庫轉換為swf文檔格式的功能。
上圖中#14和#15行代碼,你看得懂。
#16行是一空行,如果你的pdf文件是二進制數據流的話,就應該先在這里把二進制數據流轉為pdf文檔,存進Temp目錄中。不懂怎樣轉,可以參考這篇《數據流創建文件》http://www.cnblogs.com/insus/archive/2011/04/11/2012733.html
#17行,是隨機產生一個文件名,沒有后綴。
此次演示中,Insus.NET已經把一個pdf文檔拷貝至temp目錄中,如果你的pdf文檔是入在另一個目錄的,你是指向它。
#18和#19行是,是找到pdf文檔與swf文件(此時還沒有真正產生)
#21至#36是轉換swf文檔。更多參數設置,可以參考官網幫助。
#38至#40是獲得轉換后的swf文件名,添加至List中去。將來MVC的控制器用到它。
接下來在Controllers下的HomeController創建一個ActionResult和一個JsonResult方法。
在Views\Home目錄下,創建一個視圖,視圖名稱,即是在控制器中的ActionResult方法名:
下面是這個視圖代碼:
#1部分是樣式代碼,在前一篇中,它是一個樣式文件,現在直接搬至視圖中來。
#2部分,是引用jQuery庫,注意到否,可以用到最新版本的jQuery庫。
#3部分,是引用相關的js庫。
#5部分,是完全照搬舊的,沒有絲毫改變。
#4部分:
在Success方法,有兩個地方,是把javascript加入head中去。先要把swf文件賦值給swfFile變量中,第二是把InsusDocumentView.js類庫加入至head中。
完成了。看看運行時的效果:
?
總結
以上是生活随笔為你收集整理的MVC应用程序实现文件库(FlexPaper)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 泛微OA数据库表说明
- 下一篇: 2020五一建模:C题 饲料混合加工问题