一個非常不錯的純源碼“PDF轉換swf”完全脫離安裝第三方插件,直接使用java調用Flash api將PDF轉換成圖片,在將圖片轉換成swf。

package org.lesogo.swf.pdf.util;


import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.zip.DataFormatException;




import com.flagstone.transform.FSBounds;
import com.flagstone.transform.FSCoder;
import com.flagstone.transform.FSColor;
import com.flagstone.transform.FSColorTable;
import com.flagstone.transform.FSCoordTransform;
import com.flagstone.transform.FSDefineMorphShape;
import com.flagstone.transform.FSDefineObject;
import com.flagstone.transform.FSDefineShape3;
import com.flagstone.transform.FSMovie;
import com.flagstone.transform.FSPlaceObject;
import com.flagstone.transform.FSPlaceObject2;
import com.flagstone.transform.FSSetBackgroundColor;
import com.flagstone.transform.FSShape;
import com.flagstone.transform.FSShowFrame;
import com.flagstone.transform.FSSolidFill;
import com.flagstone.transform.FSSolidLine;
import com.flagstone.transform.util.FSImageConstructor;


public class PdfToSwfUtil {


    public static final String SWF_FILE = "C:/Users/zhangliju/Desktop/手機軟件包/swf/pdf/image/img.swf";


    public static final String IMAGE_SOURCE_FILE = "C:/Users/zhangliju/Desktop/手機軟件包/swf/pdf/image";


    public static void main(String[] args) {
        try {
//         PdfToSwfUtil.setUpBeforeClass();
        createMovie(IMAGE_SOURCE_FILE, SWF_FILE,1f);
//            tool.transformToIMG(SWF_FILE, IMAGE_TARGET_FILE);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (DataFormatException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
    }


    /**
     * 
     * @param sourceIMG 圖片文件夾(多個圖片),或者圖片絕對路徑(單個圖片)
     * @param targetSWF 保存swf路徑
     * @param frameRate 每張圖片幀率 一般1秒1幀 0.1開始 越大越快
     * @throws DataFormatException
     * @throws IOException
     */
public static void createMovie(final String sourceIMG,final String targetSWF,final float frameRate)
            throws DataFormatException, IOException {
FSMovie movie = new FSMovie();
        
        File file = new File(sourceIMG);
        int i = 1;
        for (File f : file.listFiles()) {
       
        //獲取圖片基本屬性
        FSImageConstructor imageGenerator = new FSImageConstructor(f.getAbsolutePath());
         
        //獲取圖片和畫布id
        int imageId = movie.newIdentifier();
             
             int shapeId = movie.newIdentifier();


             //獲取到圖片格式
             FSDefineObject image = imageGenerator.defineImage(imageId);
             
             image.setIdentifier(imageId);
             
             imageGenerator.defineImage(imageId);
             //加入圖片
             movie.add(image);
             //設置swf畫布樣式、位置
             FSDefineShape3 shape = imageGenerator.defineEnclosingShape
              //x ,y       設置畫布邊框大小顏色
              (shapeId,imageId, 0, 0, new FSSolidLine(10, FSColorTable.white()));
             //加入swf模型
             movie.add(shape);
             //得到畫布
             FSBounds bounds = shape.getBounds();
             //設置畫布到容器
             movie.setFrameSize(bounds);
             //設置每張圖片1秒一幀
             movie.setFrameRate(frameRate);
             //設置容器背景顏色
             movie.add(new FSSetBackgroundColor(FSColorTable.white()));
             //在每一幀上添加一個圖片,並且設置上下距離爲0
             movie.add(new FSPlaceObject2(shapeId, i, 0, 0));
//顯示動畫
             movie.add(new FSShowFrame());
             i+=2;
}
        //在每一幀上添加一個圖片,並且設置上下距離爲0,這個地方需要在Flash中最後多添加一幀加入空白幀,否則顯示不正常。
        movie.add(new FSPlaceObject2(-1, i, 0, 0));
        //輸出路徑
        movie.encodeToFile(targetSWF);
    }

}


<a href="http://download.csdn.net/detail/u012659564/9219339">資源下載</a>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章