16,548
社区成员




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;
}