<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    PPT轉圖片(更新)

    Posted on 2008-01-04 11:26 dennis 閱讀(4366) 評論(0)  編輯  收藏 所屬分類: java
    update:2008-05-05,POI已經可以處理這個需求:
    package net.rubyeye.test;

    import java.io.FileOutputStream;

    import org.apache.poi.hslf.HSLFSlideShow;
    import org.apache.poi.hslf.model.Picture;
    import org.apache.poi.hslf.usermodel.PictureData;
    import org.apache.poi.hslf.usermodel.SlideShow;

    public class PPTToImageConverter {
        
    public static void main(String[] args) throws Exception {
            SlideShow ppt 
    = new SlideShow(new HSLFSlideShow("D:/test.ppt"));

            
    // extract all pictures contained in the presentation
            PictureData[] pdata = ppt.getPictureData();
            
    for (int i = 0; i < pdata.length; i++) {
                PictureData pict 
    = pdata[i];

                
    // picture data
                byte[] data = pict.getData();

                
    int type = pict.getType();
                String ext;
                
    switch (type) {
                
    case Picture.JPEG:
                    ext 
    = ".jpg";
                    
    break;
                
    case Picture.PNG:
                    ext 
    = ".png";
                    
    break;
                
    case Picture.WMF:
                    ext 
    = ".wmf";
                    
    break;
                
    case Picture.EMF:
                    ext 
    = ".emf";
                    
    break;
                
    case Picture.PICT:
                    ext 
    = ".pict";
                    
    break;
                
    default:
                    
    continue;
                }
                FileOutputStream out 
    = new FileOutputStream("D:/test/pict_" + i + ext);
                out.write(data);
                out.close();

            }
        }
    }

       原文:
       小結下最近做的東西吧。因為是做一個素材管理的東西,因此需要處理各種各樣的素材,音頻、視頻、圖片、pdf、ppt等等。遇到一個需求就是將PPT轉成圖片組,google一下,在java里是可以jcom之類的開源庫實現,本質上都是通過jni調用office的COM接口來實現。我們就需要這么一個小功能,拖這么大個開源庫進來實在沒有必要。最后決定自己寫個動態鏈接庫,通過jni來調用。
        先寫工具類,
    public class PPTUtils {
        
    public PPTUtils() {
        }

        
    public static native void convertPPT2IMG(String pptFileName, String tmpDir);

     
       public static void loadLibrary() {//加載動態庫
            String dllFileName = "pptDll";
            
    try {
                String OsName 
    = System.getProperty("os.name");
                
    if (OsName.contains("Windows")) {
                    dllFileName 
    += ".dll";
                } 
    else {
                    dllFileName 
    += ".so";
                }
                
    //加載動態鏈接庫
                System.load(dllFileName);
             
            }
            
    catch (Exception e) {
             
    //   LOG.error("can not load " + dllFileName + ", " + e.getMessage());
                e.printStackTrace();
            }
         }
    }

        編譯一下,執行javah PPTUtils生成頭文件PPTUtils.h。接下來用vc寫個動態鏈接庫,記的將MSPPT.OLB(在office安裝目錄下)加入工程,新建一個ppt2img.cpp:
    #include "stdafx.h"
    #include 
    "PPTUtils.h"
    #include 
    "msppt.h"

    JNIEXPORT 
    void JNICALL Java_com_starnet_dmb_util_PPTUtils_convertPPT2IMG(JNIEnv *env,
          jclass clazz, jstring pptFileName, jstring tmpDir){
       
    //初始化com
        if (CoInitialize( NULL ) == E_INVALIDARG)
        {
           AfxMessageBox(_T(
    "初始化Com失敗!"));
           
    return;
        }  
        _Application   app;
        Presentations   prsts;
        _Presentation   prst;
        
    //jstring轉成char *
       const char *ppt;
       ppt 
    = env->GetStringUTFChars(pptFileName,0);
       
    const char *tmp;
       tmp
    =env->GetStringUTFChars(tmpDir,0);

       
    if(!app.CreateDispatch(_T("PowerPoint.Application"))){
          AfxMessageBox(_T(
    "初始化PowerPoint失敗!"));
           
    return;
       }
       prsts   
    =   app.GetPresentations();
       prst   
    =   prsts.Open(_T(ppt),false,false,false);
       prst.SaveAs(_T(tmp),
    17,false);
       app.ReleaseDispatch();
       app.Quit();
       env
    ->ReleaseStringUTFChars(pptFileName,ppt);
       env
    ->ReleaseStringUTFChars(tmpDir,tmp);
       CoUninitialize();
    }

    主站蜘蛛池模板: 中文字幕久精品免费视频| 人人公开免费超级碰碰碰视频| 99久久国产精品免费一区二区| 国产亚洲情侣一区二区无| 色www永久免费网站| 亚洲成Av人片乱码色午夜| 免费一区二区三区| 亚洲av永久无码精品网站| 国产一区二区免费| 中文字幕亚洲免费无线观看日本| 日韩免费人妻AV无码专区蜜桃| 亚洲国产精彩中文乱码AV| 99久久国产免费中文无字幕| 亚洲视频在线观看不卡| 久久受www免费人成_看片中文| 99999久久久久久亚洲| 日本免费人成黄页在线观看视频| 欧洲亚洲国产精华液| 亚洲另类少妇17p| 国产成人一区二区三区视频免费| 亚洲视频在线观看免费视频| 最近最新MV在线观看免费高清| 色综合久久精品亚洲国产| 亚洲区不卡顿区在线观看| 大地资源在线资源免费观看| 亚洲视频免费在线看| 午夜电影免费观看| 免费无毒a网站在线观看| 亚洲高清国产AV拍精品青青草原| 国产猛男猛女超爽免费视频| 91亚洲性爱在线视频| 国产成人免费福利网站| 中文在线观看免费网站| 亚洲熟妇无码爱v在线观看| 永久免费看bbb| 免费网站观看WWW在线观看| 亚洲国产综合自在线另类| 国产精品深夜福利免费观看| 在线看片免费人成视频播| 亚洲天然素人无码专区| 国产成人亚洲综合无码|