本地已经安装Adobe Acrobat11.0和office,想通过在VC中调用Acrobat的接口API函数,将任意一个office文件转换为pdf文件,查过一些例子,几乎都是C#的,VC的又该如何做呢?在这先谢啦!希望做过的大侠不吝赐教!VCOfficePDF

解决方案 »

  1.   

    和C#差不多吧,就是使用COM控件的方式不同而已
      

  2.   

    谢谢楼上的答复!我找到过一段VC的代码,如下,但是提示CPDFMakerApp没有定义,看C#中是直接把PDFMakerAPI.dll引入了,但在VC++中却不行,不知该如何做:
    BOOL Doc2PDF(LPCTSTR lpszSrcDoc, LPCTSTR lpszDstPDF) 
    {     
    HRESULT hr;     
    CLSID clsid;     
    IUnknown* pUnk = NULL;     
    IDispatch *pDispApp = NULL;

    if (!PathFileExists(lpszSrcDoc))         
    return FALSE;     
    CLSIDFromProgID(L"PDFMakerAPI.PDFMakerApp", &clsid);     
    hr = ::GetActiveObject(clsid,NULL,&pUnk);     
    if (FAILED(hr)) //          
    hr = ::CoCreateInstance( clsid, NULL, CLSCTX_SERVER, IID_IUnknown, (void**) &pUnk);     
    if (SUCCEEDED(hr))     
    {         
    hr = pUnk->QueryInterface(IID_IDispatch, (void**)&pDispApp);         
    if (FAILED(hr))         
    {             
    pUnk->Release();             
    return FALSE;         
    }         
    COleVariant vOpt(DISP_E_PARAMNOTFOUND, VT_ERROR);         
    COleVariant covFalse((short)FALSE);         
    COleVariant vTrue((short)TRUE);         
    CPDFMakerApp maker; 
    maker.AttachDispatch(pDispApp,FALSE);         
    /*SAFEARRAY *ar[2];         
    ar[0] = SafeArrayCreateVector(VT_BSTR,0,1);         
    ar[1] = SafeArrayCreateVector(VT_BSTR,0,1);         
    _bstr_t a(lpszSrcDoc);         
    _bstr_t b(lpszDstPDF);         
    LONG rgIndices = 0;         
    SafeArrayPutElement(ar[0],&rgIndices,(BSTR)a);         
    rgIndices = 0;         
    SafeArrayPutElement(ar[1],&rgIndices,(BSTR)b);*/        
    long ret = 1;         
    do 
    {             
    ret = maker.CreatePDF(lpszSrcDoc,lpszDstPDF,vOpt,covFalse,vTrue,covFalse,vOpt);             
    Sleep(100);         
    } while(ret != 0);                   
    //ret = maker.CreatePDFFromMultipleFiles(ar);         
    //SafeArrayDestroy(ar[0]);         
    //SafeArrayDestroy(ar[1]);         
    pDispApp->Release();        
    pUnk->Release();         
    return ret;     
    }     
    return FALSE; 
    }
      

  3.   

    用loadlibrary 加载PDFMakerAPI.dll
      

  4.   

    谢谢 shen_wei,我用LoadLibrary加载了,但没有效果啊?这个已经试过了。
      

  5.   

    你安装最新版的acrobat pdf,然后找到最新的这个DLL试试
      

  6.   

    暂时没有什么好的解决办法,只能在C程序中调用C#生成的exe来对office文件来进行转换pdf。
      

  7.   

    试试用COM的形式,把PDFMakerAPI.dll import进来,或者用工具生成tlb/tlh文件include