:::

使用SWFTools把PDF轉成可以瀏覽的SWF檔案

7月 02, 2009 , 5 Comments Edit Post

image

SWFTools,是個功能強大的SWF工具,可以把AVI影片、PNG JPEG圖片、PDF轉換成SWF格式的檔案。SWF格式是Adobe Flash匯出後的檔案,現在大部分都支援Flash的瀏覽器中都可以直接播放,Wikipedia寫說有99%的網路使用者都可以讀取swf檔案,包括任天堂Wii或是Sony的PSP。

image

其中pdf2swf + rfxview viewer 的功能最讓我感到驚豔。如名稱所示,他可以把PDF轉換成SWF之後,再結合rfxview viewer輸出成一個可供瀏覽的SWF檔案。瀏覽的項目包括放大、縮小、拖曳、換頁等功能,而且可以直接在網頁上播放,非常令人讚賞!有興趣的話可以先開啟範例網頁來玩玩看!

詳細的SWFTools指令,可以參考「光头的专栏 - SWFTools 命令」,裡面也介紹了中文字的解決方案。

我也把SWFTools加入了DSpace的Media-filter功能當中,這一篇則是先單純地介紹怎麼安裝SWFTools,並且把PDF轉換成SWF、並結合到SWFTools。


安裝SWFTools

SWFTools下載網頁:http://www.swftools.org/download.html,內有Windows版本跟Linux版本。

如果你跟我一樣是用CentOS的話,我們可以直接使用yum指令來直接安裝SWFTOOLS喔!

請以root身份登入,然後輸入以下指令:

[root@dspace ~]# yum -y install swftools

安裝完成之後,就可以用「pdf2swf [來源的pdf檔] [輸出的swf檔]」來作轉換喔,例如下面的指令:

[root@dspace ~]# pdf2swf input.pdf output.swf

取得rfxview.swf瀏覽器

直接用pdf2swf轉換出來的swf檔案並不具備瀏覽器的功能,必須搭配rfxview.swf才有這個效果。

rfxview.swf可以從SWFTools下載頁面中的swftools-0.9.0.tar.gz找到,我也另外備份了一份到SkyDriveMiroko空間當中。

實作範例

請先把PDF檔案、rfxview.swf瀏覽器放到同一個資料夾當中。
PDF範例檔案可以使用我的Blog(SkyDrive下載Miroko下載)

轉換的指令如下:

pdf2swf -z -B [rfxview.swf瀏覽器的路徑] -s flashversion=7 -t [來源PDF] -o [輸出SWF]

於是實際上輸入的指令如下:

[dspace@dspace-course ~]$ pdf2swf -z -B rfxview.swf -s flashversion=7 -t 1.pdf -o 2.swf

你可以用以下HTML程式碼寫在網頁中以開啟轉換後的2.swf:

<OBJECT CLASSID="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
 WIDTH="595"
 HEIGHT="842"
 CODEBASE="http://active.macromedia.com/flash5/cabs/swflash.cab#version=8,0,0,0">
  <PARAM NAME="MOVIE" VALUE="2.swf">
  <PARAM NAME="PLAY" VALUE="true">
  <PARAM NAME="LOOP" VALUE="true">
  <PARAM NAME="QUALITY" VALUE="high">
  <EMBED SRC="2.swf" WIDTH="595" HEIGHT="842"
   PLAY="true" ALIGN="" LOOP="true" QUALITY="high"
   TYPE="application/x-shockwave-flash"
   PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">
  </EMBED>
</OBJECT>

輸出結果應該要如下所示(SkyDrive下載Miroko下載):


SWFTools轉出來的PDF2SWF+rfxview仍有個缺點,就是他的大圖瀏覽在一開始的顯示比例跟位置不是說很好,開啟之後無法預設用「全畫面」來瀏覽。不過暫時也找不到其他的開放原始碼的替代方案,所以就期待SWFTools繼續改版吧。

總共5 則留言, (我要發問)

  1. 由於後來發現到不知為何使用swftools轉換pdf到swf中如果有包含中文字型「細明體」、「新細明體」或是「標楷體」的時候,就會造成轉換完成的swf字體破碎。

    但我發現到使用「微軟正黑體」就不會有這個問題
    雖然這也可能只是我在Linux上的字型有錯誤,但我還真的找不到該怎麼辦。

    於是我想到在轉換成PDF的時候就用OpenOffice的替代字型,把不能使用的細明體、新細明體或標楷體統統轉換成微軟正黑體就好了。

    OpenOffice的設定方法請參考這個網址:http://zh.openoffice.org/doc/ooodoc_01_10.html

    因為我們使用DSpace轉換文件檔成PDF時是借用JODConverter來透過OpenOffice轉換,所以到OpenOffice去設定即可。
    設定的時候要記得先把soffice關掉,不然無法開啟OpenOffice主畫面。

    回覆刪除
  2. 應該是很不錯的開源軟體,不過作為電腦小白我受不了這些代碼。
    在briian的文章中看到一款axmag還不錯,可以試試 http://www.axmag.com/submit.html

    回覆刪除
  3. 感謝您的情報
    不過這篇文章不是講給一般使用者的喔XD

    這篇文章主要是給架在伺服器的網站工程師去開發一個可以把PDF轉成SWF的工具。簡單的指令碼可以方便系統進行自動轉檔。
    聰明一點的工程師就可以用來開發出像aXmag PDF to Flash這樣的網站出來提供服務。

    回覆刪除
  4. To 4樓wangkuowei,

    把swf放在網頁上,然後列印網頁成為PDF吧

    回覆刪除

留言工具: