有才華的人,別忘記給滋潤你的那塊土壤施肥

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            28 隨筆 :: 5 文章 :: 147 評論 :: 0 Trackbacks
                    有時候一些資料只能給別人看,如可打印的文檔如DOC,PDF,但不能讓其他無權限的人另存或者打印,特別是web版的文件管理類的系統,總會考慮到這個問題。當用IE直接打開pdf的時候,盡管可以疲敝IE的另存為,但是點擊PDF文件的時候,再按F8的時候,PDF的閱讀器如(adobereader)會顯示ToolsBar,所以直接打開pdf貌似行不同(目前所知道的)。當時一聽到這個需求立馬就想用swing(因為我只懂一些swing),把pdf轉換成圖片,然后每一頁對應一張圖片顯示,但是馬上給否定了,第一轉換出來的圖片不清晰(我目前所了解的)而且這圖片放大縮小的效果也不好看,第二不想花時間和別人去爭論swing慢的問題。

                   剛巧進一家新公司沒什么任務,在看flex,就想能不能把PDF轉換成swf呢?好,馬上google,結果還真找到有這么好的東東SWFTOOLS,這款東西是老外用c寫的,還是開源的,夠強!它有很多功能包括PDF2SWF,SWFCombine,SWFStrings,SWFDump,JPEG2SWF,PNG2SWF,GIF2SWF,WAV2SWF,AVI2SWF,Font2SWF。在這里我們只需要PDF2SWF,關于PDF2SWF的命令大家可以查看他的幫助documentation,E文不好的可以看如何將PDF轉換成SWF》,這個東西是把pdf的每一頁轉換成swf的每一幀,這樣的話又可以很好的解決翻頁功能。安裝好就可以用來測試了。然后用cmd進入到安裝的目錄下,隨便找一份pdf進行測試,如下:
          圖片中“-o”的那個參數就是指點生成的swf的名稱和路徑,這樣就能轉成swf,而且非常清晰和pdf無異,簡單吧~

                   整合在java里面也簡單,只要一個用Runtime.getRuntime().exec()就行,如下:
          package kissjava.pdf;
          /**
          *
          @author kissjava;
          */


          import java.io.IOException;

          public class PDFToSWF {
              
          public static void main(String[] args) throws IOException{
                  Process process 
          = Runtime.getRuntime().exec("d:\\Program Files\\SWFTools\\pdf2swf.exe -o \"e:\\test.swf\"  -t \"e:\\flexBinding.pdf\""); 
                  System.out.println(
          "sucess!!!");
              }

          }

          這樣等生成了swf,就發個通知告訴客戶端可以調用這個swf。
          但是當寫好mxml后卻bug一大堆,下面是flex程序初始化的一個函數:
          private function init():void{
                          
          var mc:MovieClip = swfload.content as MovieClip;
                          mc.gotoAndStop(
          1);
                          
          var myContextMenu : ContextMenu = new ContextMenu();
                            myContextMenu.hideBuiltInItems();
                            
          this.contextMenu = myContextMenu;                
                          
          //swfload.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown);
                          //swfload.addEventListener(MouseEvent.MOUSE_UP,mouseUp);
                      }

          卻發現mc為null,怎么可能呢?用別人用flash寫的swf,明明是可以通訊的,debug進去,發現swfload.content 是AVM1Movie,這東西是個老東西是as2的,他和MovieClip是不來電的,而且用反編譯的查看這個生成的swf,它顯示的版本居然是flash6,天啊,這么老的版本,要想和flash9通訊很困難,找了很多資料,都說很復雜。但是這款最新下載的工具更新的時間明明是2008-09-22,沒道理不支持flash9啊,可是它的幫助文檔卻沒設置flash版本這方面的參數說明,苦悶了很久,抱著試試的態度去看了下他的源碼(我很怕C哈),結果里面果然有蹊蹺,居然有指定flash版本的參數,它為什么不在文檔里說明呢??

          把上面生成swf語句改成如下:
          Process process = Runtime.getRuntime().exec("f:\\Program Files\\SWFTools\\pdf2swf.exe -o \"e:\\test.swf\" -s flashversion=9 \"e:\\flexBinding.pdf\""); 

          再運行flex,ok,跑的爽。測試效果如下:

          posted on 2008-09-26 22:17 kissjava 閱讀(12535) 評論(50)  編輯  收藏 所屬分類: Flex

          評論

          # re: 用Flex調用SWF查看PDF 2008-09-27 12:23
          真強。  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2008-09-27 23:16 枯寬
          剛上網發現Macromedia有個把doc轉成swf的,太強了
          下面是個例子:
          http://www.nihg.org/blogview.asp?logID=297  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2008-10-17 17:07 next_dream
          請教一下,我想知道為什么我像你這樣寫以后不能控制swf停止和第幾幀跳轉呢?他總是在不停的循環播放我導入的fswf文件。能不能把你的這個抓圖的flex代碼給我一份,謝謝。小弟剛剛研究還請你多多指教。

          next_dream@126.com 我的郵箱  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2008-10-17 17:24 next_dream
          我的flex是這么寫


          <?xml version="1.0" encoding="utf-8"?>
          <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()">
          <mx:Script>
          <![CDATA[
          private function initApp():void{
          var mc:MovieClip = swfload.content as MovieClip;
          mc.gotoAndStop(1);
          var myContextMenu : ContextMenu = new ContextMenu();
          myContextMenu.hideBuiltInItems();
          this.contextMenu = myContextMenu;
          }
          ]]>
          </mx:Script>

          <mx:Panel >
          <mx:SWFLoader id="swfload" source="@Embed('pdf/zhu.swf')" />
          </mx:Panel>

          </mx:WindowedApplication>  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2008-10-24 10:44 枯寬
          @next_dream
          首先你得確定你的這個swf是什么類型的,用debug的形式查看swfload.content是AVM1Movie 還是什么?
          如果swfload.content 根本就拿不到為null
          那么<mx:SWFLoader id="swfload" source="@Embed('pdf/zhu.swf')" />
          =====》試試
          <mx:SWFLoader id="swfload" source="@Embed('pdf/zhu.swf')"complete="callLater(callLater, [swfloadComplete,[event]]);" />
          swfloadComplete為:
          private function swfloadComplete(event:Event):void{
          mc.gotoAndStop(1);//設置當前頁為第一頁
          }  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF[未登錄] 2008-12-04 10:23 fly
          你好,能不能發個完整的代碼呢?謝謝, 發到我郵箱也行,luofeng113-113@163.com  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2008-12-09 10:25 jking
          最近也在研究flex與java的整合,能否發個完整的代碼到我的郵箱里,謝謝了
          xieminxian@yeah.net  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF[未登錄] 2008-12-09 12:05 tulip
          我最近在學習flex,能把代碼也發給我一份嗎?我的郵箱是linyujade@163.com.謝謝了。  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2008-12-21 14:47 waiting
          大俠,我也正在學習flex,有幸拜讀了你的文章,能不能也給我一份代碼研究一下,謝謝! waitany@163.com.  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF[未登錄] 2009-02-12 16:31 Tony
          我最近在學習flex,能把代碼也發給我一份嗎?我的郵箱是ibm-online@qq.com謝謝了  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2009-03-06 11:58 qsecofr
          我最近在學習flex,能把代碼也發給我一份嗎?我的郵箱是qsecofr2000@163.com謝謝了  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF[未登錄] 2009-04-24 17:23 xiaogang
          作者能把源碼發給我嗎
          我的郵箱是vtaminn@163.com  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2009-05-05 09:50 CTK
          最近在學習flex,看了你的文章,受益頗多,能否把代碼也發給我一份學習學習?我的郵箱是luoctk@163.com謝謝了  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF[未登錄] 2009-05-19 17:30 Terry
          作者能把源碼發給我一份嗎
          我的郵箱是TarzanTerry@yahoo.com.hk

          謝謝了  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2009-07-13 10:28 8772
          如果后臺是使用c#能有辦法嗎?  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2009-07-14 17:17 jamin
          你好,能發個源碼過來學習一下嗎?
          我的郵件是:jamin_381@hotmail.com  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2009-07-16 08:52 枯寬
          @8772
          肯定可以的~不過沒試過  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2009-07-29 19:29 tsubasa
          能把源碼發給我一份嗎 3Q

          郵箱是tsubasa_Wing10588@hotmail.com  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2009-08-09 13:00 水火
          能把源碼發給我嗎 謝謝
          email: delphi-li@163.com  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2009-08-21 15:41 leieli
          能把源碼發給我嗎?謝謝啦!!!
          malei1986@139.com  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2009-08-25 17:00 崇拜樓主
          我也需要啊  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF[未登錄] 2009-09-21 17:12 lib
          可以也給我發一份代碼嗎?謝謝了libo_591@163.com  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2009-10-09 17:07 manager
          在flex web應用中也能使用你說的這種方法嗎?
          能否提供完整源碼,不勝感激!  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2009-10-22 11:13 p27135
          轉成swf一樣也能下載呀  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2009-11-04 20:58 Lingchen Bu
          謝謝你的文章。請問你這篇文章設計軟件的版本是多少?
          我當前的版本swftools0.90 Flex 3.2

          我出現的問題是。flex不能加載生成的swf。編譯錯誤。當我換另外一個通過flash生成的swf事能夠正常加載。所以我懷疑pdf2swf生成的swf里面是不是缺少什么信息,flex無法加載。

          再次謝謝!  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2009-11-05 09:03 kissjava
          @Lingchen Bu
          跟蹤進去看看swfload.content 是不是AVM1Movie?是的話,那么你就要按文中所說的,指定flashversion=9了。

          一般就沒其他什么問題了。  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2009-11-05 09:43 Lingchen Bu
          @kissjava
          謝謝你的回復。
          我建立flex porject的時候能夠正常編譯。顯示正常。
          但是在使用AIR project的時,編譯就編譯不過去。報的錯誤是
          "Unable to create source PDFViewer__embed_mxml_pdf_rmsd_swf_308507626. PDFViewer.mxml"
          當我換做其他由Adobe Flash生成的swf的時候編譯能夠正常通過。
            回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2009-11-07 15:49 xinxin
          給小弟 發一份 謝謝了 xinxin2005100@163.com  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2009-12-16 15:51 bianjiang
          謝謝樓主,我想學習一下,給我發一份 謝謝拉 bianjiang09@126.com  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2009-12-17 09:16 grassking
          我也想要一份wxc0564335@163.com  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2010-02-23 13:20 bnmbj
          樓主:給小弟個代碼如何?
          我正在摸索中......
          郵箱:zhchongyao@126.com  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF[未登錄] 2010-02-25 22:34 xiaofei
          您好,能否把源碼發一份給我呢?謝謝.
          feiling2007.love@163.com  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2010-03-01 17:28 JTee
          給小弟 發一份 謝謝了 sianke731@126.com  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF[未登錄] 2010-03-01 22:08 小飛
          您好,能否把源碼給我一份呢?謝謝。
          feiling2007.love@163.com  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF[未登錄] 2010-03-02 17:42 Alan
          播放swf只能一幀一幀播放嗎?那我的下拉框作用就不大了,可以實現像看文件那樣,可以下拉到下一頁嗎?  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF[未登錄] 2010-03-03 23:42 小飛
          您好,我在轉換的過程中遇到一個問題。

          就是轉化后的swf文件 里面的文字都比較小(也就是pdf文件里面的文字都比較小,換句話說就是pdf文件的寬度都比較小),有沒有辦法設置轉化后的swf文件里面的Pdf 文件的寬度大小呢?謝謝。

          我的郵箱是feiling2007.love@163.com
            回復  更多評論
            

          # re: 用Flex調用SWF查看PDF[未登錄] 2010-03-04 17:43 kissjava
          @小飛
          swftoos的安裝目錄下面有個GUI程序,你運行它看看轉換的效果看,如果它能正常的話,那就有途徑的,這個工具對字體的確是有些麻煩,特別是亞洲字體,很久沒關注這方面的啦。自個找吧,祝你好運~~~  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF[未登錄] 2010-03-14 00:33 小劉
          你好,我也正在學習flex加載pdf。
          我也想要一份 la5baby@yahoo.com.cn.
          謝謝。  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2010-03-16 20:20 chanyujiajia
          有空請發一份源代碼給我,謝謝。
          chanyujiajia@163.com  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2010-04-08 15:16 chenwenjun
          大哥,小弟我跪求樓主的Flex調用SWF查看PDF的源碼,有空請發一份源代碼給我,謝謝。
          cwj114473275@163.com   回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2010-04-24 22:21 machine
          可以給我發一份這個源代碼嗎?謝謝。steve2008.ma@gmail.com  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2010-11-24 15:06 jaon
          你是如何將所有幀一起顯示出來的?
          我的做的只能一幀一幀的去翻頁不能同時顯示出來,拉滾動條查看  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2010-12-07 23:08 lihw
          學習下,能給我發份嗎?lihaiwu2005@gmail.com  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2011-04-20 12:30 kingsmalltwo
          正在學習 前輩能把源碼發我一份嗎?
          kingsmalltwo@gmail.com
            回復  更多評論
            

          # re: 用Flex調用SWF查看PDF[未登錄] 2011-06-20 16:49 guo
          我現在也正在研究flex顯示pdf文檔,大俠能否給我一份你的完整代碼,謝謝!
          我的郵箱是guozhiguo86@126.com ; abcxyz86@126.com  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2011-10-25 20:01 HD Lee
          高手可否給一份源代碼,我正在寫一個類似的view,問題很多。。。。  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF[未登錄] 2011-12-15 10:57 小弟
          求大神給小弟發個完整版啊 654797076@qq.com 好人一生平安啊  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF[未登錄] 2011-12-15 11:02 小弟
          如果要讀的文件是在服務器中,而管理人員可以上傳文件,那么如何自動將上傳的文件轉換成swf格式,用戶端在瀏覽pdf文件時,并沒有swf文件,是要從服務器中讀取的,這部分如何進行綁定啊?邏輯上有點不清楚,求指教  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF[未登錄] 2011-12-15 15:25 kissjava
          @小弟
          上傳文件時就放進線程池,用SWFTOOLS做文件轉換的。調用swf的時候,若沒找到,就先轉換,再調用。
          代碼沒了。。。上一家公司的。  回復  更多評論
            

          # re: 用Flex調用SWF查看PDF 2012-06-29 10:16 CDD
          有才華的人,別忘記給滋潤你的那塊土壤施肥

          膜拜LZ這句話  回復  更多評論
            

          主站蜘蛛池模板: 磐安县| 历史| 湘乡市| 奎屯市| 浪卡子县| 绍兴市| 南宁市| 邵东县| 荣昌县| 泰兴市| 景德镇市| 凤城市| 巩留县| 犍为县| 绥芬河市| 灵寿县| 丹江口市| 定兴县| 安义县| 长岭县| 大埔县| 北宁市| 寿光市| 绥宁县| 凤翔县| 晋州市| 高安市| 安阳市| 寿光市| 孝感市| 开封县| 来凤县| 荣昌县| 宾阳县| 宁远县| 东海县| 彭泽县| 抚宁县| 皋兰县| 乐山市| 嘉祥县|