php文库系统解决方案
php文庫系統解決方案(仿百度、豆丁文庫系統)
方案一:
第一步:下載文庫核心插件
(FlexPaper+SWFTools 實現仿百度文庫pdf->swf->界面顯示);
下載地址:http://down.51cto.com/data/564004(PHP仿百度文庫核心代碼)
?
SWFTools官方下載地址:
http://www.swftools.org/download.html
?
1、界面顯示.swf
?
2、pdf轉換成.swf配置
flexpaper\php\lib\config.ini.win.php
path.pdf和path.swf分別建一個pdf存放路徑和轉換后.swf存放路徑(即前臺讀取路徑)
安裝好SWFTools,并配置好SWFTools安裝完整路徑,別填錯了。
?
2、pdf->swf轉換頁面地址:(打開頁面,自己會轉換成.swf并頁面顯示)
flexpaper/php/simple_document.php
?
?
第二步:解決上傳文件轉換為PDF問題
PHP目前沒有開源的文件轉換為PDF的代碼插件。
OpenOffice是一套跨平臺的辦公室軟件套件,能在 Windows、Linux、MacOS X (X11)、和 Solaris 等操作系統上執行。它與各個主要的辦公室軟件套件兼容。OpenOffice 是自由軟件,任何人都可以免費下載、使用、及推廣它。
并且OpenOffice還提供了開源的Java調用API。(很遺憾沒有PHP的調用API),所以下一步要做的工作就是實現PHP能調用java類,從而實現php調用OpenOffice來轉換上傳文件到pdf。
OpenOffice官網下載地址:(因為調用它,當然服務器上也必須裝上這個軟件,而且要保持打開運行的狀態)
http://www.openoffice.org/download/
本地下載:http://down.51cto.com/data/583479
?
OpenOffice API下載地址:
官網:http://www.openoffice.org/api/
?
第三步:測試php調用java類
1、配置
下載:JavaBridge.jar http://down.51cto.com/data/560547
下載:java.inc? http://down.51cto.com/data/564342
?將JavaBridge.jar放在C:\Program Files\PHP\ext中 然后雙擊打開:
?
然后,將java.inc取名就叫java文件夾放在htdoc根目錄中,然后建一個測試文件:
運行test.php但是報錯:
?
- <?php?
- require_once?(?"java/Java.inc"?);?
- $v?=?new?java("java.lang.System");?
- ?
- $arr=$v->getProperties();?
- ?
- foreach?($arr?as?$key?=>?$value){?
- ????echo??$key.'=>'.$value.'<br?/>';?
- }?
- echo?'<hr?/>';?
- ?
- require_once("java/Java.inc");?//必須包含的配置文件?
- java_require("Test.jar");?//引用包含的jar包?
- ?
- $test?=?new?Java("com.phpjava.Test");?//產生實例?
- $test->setName("哈哈,PHP調用JAVA的方法!");?//后面的調用就跟在php中調用類方法一樣?
- ?
- echo?"調用類Test的getName方法,返回值為:".$test->getName()."<br>";?
- echo?"調用Test的add方法,返回值為:".$test->add(11.2,?15.7);?
- ?>?
?總是提示java_require()不被支持。期待高手指教!
結果路就被堵在了此處。最終此方案放棄。如果能夠順利php調用java方法,那么這個方案還是可行的。
?
==========================The End=================================================
方案二:
?FlexPaper是一個開源的PDF文檔在線查看控件。用戶查看PDF文檔不需要安裝Acrobat Reader,但需要利用像SwfTools這樣的工具預先將PDF文檔轉成SWF格式的文件。FlexPaper能夠對需要查看的文檔進行分頁、搜索、打印、縮放、全屏查看等
?
但對于一次性加載整個大型文檔會導致加載時間過長和內存過渡消耗。 在新的FlexPaper版本中已經能夠解決這個問題。首先需要將你的文檔拆分成多份swf文件,然后在調用FlexPaper的時候設置好相關參數,這 樣在瀏覽的時候就能夠分頁/分段加載。下面將介紹如何將文檔拆分成多份swf文件和怎么設置FlexPaper參數:
關于如何拆分文檔,在FlexPaper 1.4.5中已經提供了一個開箱即用的示例。只要在支持PHP的服務器上運行其提供的'split_document.php'文件能夠自動進行分頁。對 于服務器上不支持PHP運行的,可以在調用PDF2SWF程序時,在原來調用的命令行基礎上稍微修改一下具體如下:
C:\SWFTools\pdf2swf.exe Paper.pdf -o Paper%.swf -f -T 9 -t -s storeallcharacters
大家可以看到上面的命令行比原來只多了一個%符號,這個符號表示在PDF2SWF轉換文檔時,將為每一個頁創建一個swf文件。如:"Paper1.swf", "Paper2.swf"。然后在FlexPaper控件配置加載SwfFile的地方,采用:{filename[*,padding],total pages}這種語法表明。
以下給出一個具體的配置示例:
?
- var?fp?=?new?FlexPaperViewer(???????
- 'FlexPaperViewer',????
- 'viewerPlaceHolder',?{?config?:?{????
- ??????????SwfFile?:?"{Paper[*,0].swf,28}",????
- ??????????Scale?:?0.6,????
- ??????????ZoomTime?:?0.5,????
- ??????????ZoomInterval?:?0.1,????
- ??????????FitPageOnLoad?:?false,????
- ??????????FitWidthOnLoad?:?false,????
- ??????????PrintEnabled?:?false,????
- ??????????MinZoomSize?:?0.2,????
- ??????????MaxZoomSize?:?5,????
- ??????????localeChain?:?"en_US"????
- }});???
在這個例子中,我們指示FlexPaper按分頁的方法來加載一個共有28頁的文檔,不需要用0填充文件名。假如你的文件是 按"Paper01.swf", "Paper02.swf", .. 這種形式拆分時,要將padding設置成1,意思是用一個零來填充文件名。
但是這種解決方法有點不足的地方就是拆分后的一個個swf文件大小加起來比較原來單個文檔的大小多了很多。
轉載于:https://blog.51cto.com/xuqin/1036794
總結
以上是生活随笔為你收集整理的php文库系统解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android全景照相+软件+哪个好,A
- 下一篇: 华为mate30相机水印怎么修改