<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接口來實現。我們就需要這么一個小功能,拖這么大個開源庫進來實在沒有必要。最后決定自己寫個動態(tài)鏈接庫,通過jni來調用。
        先寫工具類,
    public class PPTUtils {
        
    public PPTUtils() {
        }

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

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

        編譯一下,執(zhí)行javah PPTUtils生成頭文件PPTUtils.h。接下來用vc寫個動態(tài)鏈接庫,記的將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();
    }

    主站蜘蛛池模板: 夜夜嘿视频免费看| 我要看免费的毛片| 337P日本欧洲亚洲大胆精品 | 色一情一乱一伦一视频免费看| 在线永久看片免费的视频| 亚洲精品午夜在线观看| 最近中文字幕mv免费高清在线 | 一级毛片成人免费看a| 国产福利电影一区二区三区,亚洲国模精品一区 | 91麻豆国产自产在线观看亚洲| 亚洲一区二区电影| 亚洲一区免费观看| 亚洲国产精品白丝在线观看| 无码国产精品一区二区免费式影视 | 亚洲国产成人AV在线播放| 午夜免费福利网站| 羞羞视频免费网站含羞草| 亚洲免费日韩无码系列| 黄视频在线观看免费| 亚洲福利在线观看| 18禁无遮挡无码网站免费| 国产精品亚洲lv粉色| 亚洲精品黄色视频在线观看免费资源| 亚洲精品偷拍视频免费观看| 久久亚洲伊人中字综合精品| 91av免费观看| 亚洲AV成人片无码网站| 国产亚洲精品拍拍拍拍拍| 国产区图片区小说区亚洲区| 久久精品国产精品亚洲人人 | xxxx日本在线播放免费不卡| 亚洲AV无码精品色午夜果冻不卡| 亚洲精品在线免费观看视频| 亚洲另类无码一区二区三区| 国产亚洲?V无码?V男人的天堂| 91成人免费观看| 无人视频在线观看免费播放影院 | 亚洲另类春色校园小说| 全部免费国产潢色一级| 性xxxx视频免费播放直播| 亚洲色大成网站WWW国产|