1 CoInitializeEx(0, COINIT_MULTITHREADED); 2 3 IXpsOMObjectFactory *xpsFactory; 4 5 HRESULT hr = CoCreateInstance(__uuidof(XpsOMObjectFactory), NULL, CLSCTX_INPROC_SERVER,__uuidof(IXpsOMObjectFactory),reinterpret_cast<LPVOID*>(&xpsFactory)); 6 7 IXpsOMPackage *package = NULL; 8 9 std::tstring tstrFilename = _T("C:\MyXPSFile.xps"); 10 11 hr = xpsFactory->CreatePackageFromFile((LPCTSTR)tstrFilename.c_str(),FALSE,&package); 12 13 HANDLE completionEvent = CreateEvent(NULL, TRUE, FALSE, NULL); 14 15 IXpsPrintJob *job = NULL; 16 IXpsPrintJobStream *jobStream = NULL; 17 18 StartXpsPrintJob(_T("MyPrinter"),_T("Print Job 1"), NULL, NULL, completionEvent, NULL, 0, &job, &jobStream, NULL); 19 20 hr = package->WriteToStream (jobStream, FALSE); 21 22 hr = jobStream->Close(); 23 24 if (completionEvent != NULL) 25 { 26 if (WaitForSingleObject(completionEvent, INFINITE) == WAIT_OBJECT_0) 27 { 28 XPS_JOB_STATUS jobStatus; 29 hr = job->GetJobStatus(&jobStatus); 30 } 31 32 CloseHandle(completionEvent); 33 completionEvent = NULL; 34 } 35 36 jobStream->Release(); 37 jobStream = NULL; 38 39 job->Release(); 40 job = NULL; 41 42 package->Release(); 43 package = NULL;