zoukankan      html  css  js  c++  java
  • Acrobat 转换pdf到png的另一种方法

    此方法效率较低,大概2秒转3页pdf成png图片,但是可以保证图片质量很高,分辨率很高。有优化的地方,但没时间研究。先放代码吧。

     前提是安装 acrobat 11(即acrobat xi)

      CAcroApp mApp = new AcroApp();
                mApp.Hide();
                String szPdfPathConst = AppDomain.CurrentDomain.BaseDirectory + @"深入浅出WPF.pdf";
                AcroAVDoc g_AVDoc = new AcroAVDoc();
                //open the PDF
                if (g_AVDoc.Open(szPdfPathConst, ""))
                {
                    int currentIndex = 0;
                    bool formDataExists = true;
    
    
                    Object newDoc = null;
    
    
                    if (g_AVDoc.IsValid())
                    {
    
                        CAcroPDDoc pdDoc = (CAcroPDDoc)g_AVDoc.GetPDDoc();
                        int iNum = pdDoc.GetNumPages();
                        Object jsObj = pdDoc.GetJSObject();
                        if (formDataExists)
                        {
                            Type T = jsObj.GetType();
    
                            object[] extractPagesParam = { currentIndex,iNum-1 };
                            newDoc = T.InvokeMember(
                                "extractPages",
                                BindingFlags.InvokeMethod |
                                BindingFlags.Public |
                                BindingFlags.Instance,
                                null, jsObj, extractPagesParam); 
    
                            String newFileName = AppDomain.CurrentDomain.BaseDirectory + "data\" + currentIndex + ".png";
                            Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "data");
    
    
                            object[] saveAsParam = { newFileName, "com.adobe.acrobat.png" };
                            T.InvokeMember(
                            "saveAs",
                            BindingFlags.InvokeMethod |
                            BindingFlags.Public |
                            BindingFlags.Instance,
                            null, newDoc, saveAsParam);
                            formDataExists = currentIndex != iNum - 1;
    
    
                            object[] closeDocParam = { true };
                            T.InvokeMember(
                                    "closeDoc",
                                    BindingFlags.InvokeMethod |
                                    BindingFlags.Public |
                                    BindingFlags.Instance,
                                    null, newDoc, closeDocParam);
    
                            currentIndex++;
                        }
                    }
                }
                mApp.CloseAllDocs();
                mApp.Exit();
    

      感谢阅读的人,希望可以帮到你。 

  • 相关阅读:
    15.接口
    14.抽象类
    13.系统总结static
    免费的Lucene 原理与代码分析完整版下载
    CODE大全浅谈谷歌adsense与PIN码
    CSDN社区投诉申请表
    Koa框架教程,Koa框架开发指南,Koa框架中文使用手册,Koa框架中文文档
    CODE大全告诉你java是否开始没落了
    Jsoup教程jsoup开发指南,jsoup中文使用手册,jsoup中文文档
    CODE大全——机器学习
  • 原文地址:https://www.cnblogs.com/congqiandehoulai/p/6429357.html
Copyright © 2011-2022 走看看