用VC做word转pdf总是出问题

ChandlerSQLee 2015-10-28 09:31:29
我用VC做一个word转pdf,当运行到Documents.Open(),过几秒钟线程就自动退出了,不知道是参数弄错了,还是怎么回事? 显示线程 'Win32 线程' (0xbb9c) 已退出,返回值为 0 (0x0)。

BOOL CConverter::Convert(CString strSourcePath, CString strTargetPath, MSWord::WdExportFormat wdExportFormat)
{

BOOL result = FALSE;
MSWord::_ApplicationPtr pWdApplicationPtr;
MSWord::_DocumentPtr pWdDocumentPtr;

COleVariant sourcePath = strSourcePath;
COleVariant argetPath = strTargetPath;
COleVariant vTrue((short)TRUE);
COleVariant vFalse((short)FALSE);
COleVariant vZero((short)0);
COleVariant vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

CoInitialize(NULL);
try
{
HRESULT hResult = pWdApplicationPtr.CreateInstance("Word.Application");
if (hResult != S_OK)
{
AfxMessageBox(_T("Application创建失败,请确保安装了word 2000或以上版本!"), MB_OK|MB_ICONWARNING);
CoUninitialize();
return result;
}
pWdDocumentPtr = pWdApplicationPtr->Documents->Open(sourcePath,
vTrue, // Confirm Conversion.
vFalse, // ReadOnly.
vFalse, // AddToRecentFiles.
vOptional, // PasswordDocument.
vOptional, // PasswordTemplate.
vOptional, // Revert.
vOptional, // WritePasswordDocument.
vOptional, // WritePasswordTemplate.
vOptional, // Format. // Last argument for Word 97
vOptional, // Encoding // New for Word 2000/2002
vFalse, // visible
vOptional, // openAndRepair
vZero, // docDirection
vOptional, // NoEncodingDialog
vOptional);

if(pWdDocumentPtr == NULL)
{
CoUninitialize();
return result;
}
hResult = pWdDocumentPtr->ExportAsFixedFormat((_bstr_t )strTargetPath, // target path
wdExportFormat, // export format
FALSE, // Open After Export
wdExportOptimizeForPrint, // Export OptimizeFor
wdExportAllDocument, // Export Range
0, // start page
0, // end page
wdExportDocumentContent, // Export Item
TRUE, // Include Doc Props
TRUE, // Keep IRM
wdExportCreateWordBookmarks, // Export Create Bookmarks
TRUE, // Doc Structure Tags
TRUE, // Bitmap Missing Fonts
FALSE); // Use ISO19005_1

if (hResult == S_OK)
{
result = TRUE;
}
}
catch(CException* e)
{
TCHAR szError[1024];
e->GetErrorMessage(szError,1024); // e.GetErrorMessage(szError,1024);
AfxMessageBox(_T("WORD文档转PDF异常:") + (CString)szError);
}
if(pWdDocumentPtr != NULL)
{
pWdDocumentPtr->Close();
pWdDocumentPtr = NULL;
}
if(pWdApplicationPtr != NULL)
{
pWdApplicationPtr->Quit();
pWdApplicationPtr = NULL;
}
CoUninitialize();
return result;
}


不知道是错在哪里,请各位帮帮忙吧。

...全文
346 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChandlerSQLee 2015-10-29
  • 打赏
  • 举报
回复
赵老师,你好,我想做一个把一些零散项目信息先存到数据库,查询时可以通过项目号查询到该项目的相关信息,如果只是显示数据条目感觉不方便查看和打印,所以想先将这些数据放到WORD文件中,但是WORD文件要在对话框中显示,不知道怎么弄,所以才将wordZ转成PDF。对于这种情况,请问你有什么建议吗?
赵4老师 2015-10-29
  • 打赏
  • 举报
回复
Word2007可以另存为pdf格式。
赵4老师 2015-10-29
  • 打赏
  • 举报
回复

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧