Cela devrait le faire en code natif, ne pas oublier d'activer COM premier:
SmartHandle event = ::CreateEvent(NULL, TRUE, FALSE, NULL);
if (event.get() == 0)
{
::AtlThrow(::GetLastError());
}
CComPtr<IXpsOMObjectFactory> pXpsFactory;
HRESULT hr = pXpsFactory.CoCreateInstance(CLSID_XpsOMObjectFactory);
if (FAILED(hr))
{
::AtlThrow(hr);
}
CComPtr<IXpsPrintJobStream> pDocumentStream;
hr = ::StartXpsPrintJob(printer, file, NULL, NULL, event.get(), NULL, NULL, NULL, &pDocumentStream, NULL);
if (FAILED(hr))
{
::AtlThrow(hr);
}
CComPtr<IXpsOMPackage> pXpsOMPackage;
hr = pXpsFactory->CreatePackageFromFile(argv[2], false, &pXpsOMPackage);
if (FAILED(hr))
{
::AtlThrow(hr);
}
hr = pXpsOMPackage->WriteToStream(pDocumentStream, FALSE);
if (FAILED(hr))
{
::AtlThrow(hr);
}
pDocumentStream->Close();
if (::WaitForSingleObject(event.get(), INFINITE) != WAIT_OBJECT_0)
{
::AtlThrow(hr);
}
Qu'ont Firstfloorsoftware dit à ce sujet quand vous leur avez demandé? – AnthonyWJones
@AnthonyWJones Exception a été un problème de ma part. Ils ont dit que la prochaine version apportera un soutien officiel pour Silverlight 4 et l'impression. Il fournira également une solution de contournement pour les attributs PathGeometry Figure générés par le pilote d'imprimante XPS qui ne sont pas compatibles avec Silverlight (un autre problème que j'ai rencontré). Donc, je tiens pour la prochaine version. – David