I have a template document, I have modify the document from some other piece of code & tried to export template as pdf
My code is
bool16 ExportAsPDF(PMString pdfPath, UIDRef docRef)
{
bool16 result = kFalse;
do
{
std::cout << "Export As PDF" << std::endl;
InterfacePtr<IDocument> doc(docRef, UseDefaultIID());
ASSERT(doc);
if(!doc)
break;
InterfacePtr<IWorkspace> workspace(GetExecutionContextSession()->QueryWorkspace());
if( !workspace )
break;
InterfacePtr<IPDFExptStyleListMgr> listPDFStyles(workspace, UseDefaultIID());
if( !listPDFStyles )
break;
// Get style index
int32 styleIndex = listPDFStyles->GetStyleIndexByName("[PDF/X-1a:2001]");
UIDRef styleRef = listPDFStyles->GetNthStyleRef(styleIndex);
InterfacePtr<IPDFExportPrefs> appExportPrefs(styleRef, UseDefaultIID());
if(!appExportPrefs)
break;
// Create pdf export cmd
InterfacePtr<ICommand> pdfExportCmd(CmdUtils::CreateCommand(kPDFExportCmdBoss));
if(!pdfExportCmd)
break;
InterfacePtr<IPDFExportPrefs> cmdExportPrefs(pdfExportCmd, UseDefaultIID());
if(!cmdExportPrefs)
break;
cmdExportPrefs->CopyPrefs(appExportPrefs);
InterfacePtr<ISysFileData> cmdSysFileData(pdfExportCmd, UseDefaultIID());
if(!cmdSysFileData)
break;
cmdSysFileData->Set(FileUtils::PMStringToSysFile(pdfPath));
InterfacePtr<IUIFlagData> cmdUIFlagData(pdfExportCmd, UseDefaultIID());
if(!cmdUIFlagData)
break;
cmdUIFlagData->Set(kSuppressUI);
UIDList outputList(::GetDataBase(doc));
if(cmdExportPrefs->GetPDFExReaderSpreads() != IPDFExportPrefs::kExportReaderSpreadsON)
{
InterfacePtr<IPageList> pageList(doc, UseDefaultIID());
for( int32 i = 0; i < pageList->GetPageCount(); ++i )
outputList.Append(pageList->GetNthPageUID(i));
}
else
{
InterfacePtr<ISpreadList> spreadList(doc, UseDefaultIID());
for(int32 i = 0; i < spreadList->GetSpreadCount(); ++i)
outputList.Append(spreadList->GetNthSpreadUID(i));
}
InterfacePtr<IOutputPages> cmdOutputPages(pdfExportCmd, UseDefaultIID());
if(!cmdOutputPages)
break;
cmdOutputPages->Clear();
cmdOutputPages->SetMasterDataBase(::GetDataBase(doc));
cmdOutputPages->SetIsSpreads(kFalse);
cmdOutputPages->InitializeFrom(outputList, kFalse);
UIDRef docRef = ::GetUIDRef(doc);
ErrorCode errCode = CmdUtils::ProcessCommand(pdfExportCmd);
if (errCode != kSuccess)
{
ErrorUtils::PMSetGlobalErrorCode( kSuccess );
}
else
result = kTrue;
}while(false);
return result;
}
It is crashing randomly for some documents. I can't figure out the problem.
If some one can suggest some other way of exporting the document ( other than using service registry, I have that also) please tell
Or if someone can point me out for my mistake in this code please tell.
Please help