本地已经安装Adobe Acrobat11.0和office,想通过在VC中调用Acrobat的接口API函数,将任意一个office文件转换为pdf文件,查过一些例子,几乎都是C#的,VC的又该如何做呢?在这先谢啦!希望做过的大侠不吝赐教!VCOfficePDF
解决方案 »
- 什么是内核对象的“指针计数”
- 问一个MessageBox的问题
- 使用MFC加载位图的问题
- VC程序:释放一个资源文件然后运行.帮忙看下这段代码哪里出了问题?
- 急求MFC怎么重叠显示位图
- CString转换成const char* (快要疯了)
- 错误:记录集是只读
- 如何编程设置本机IP地址、子网掩码、默认网关等?
- 我的选择?VC++ OR ASP
- 我是从网上下载的vs.net beta2,解压后有四个文件夹,安装时cd1的一些文件载cd2,cd3下,难道要把cd2 cd3的内容拷到一个cd1对应的文件夹下才能安装上吗?
- 由于小弟要去北京不知道哪里有卖书的!请前辈们推荐一下在中关村卖VC书的好地方!多谢!多谢!
- 不用ATL和MFC,我用纯粹C++写了一个EXE的COM,QueryInterface失败,求救
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;
}