0
有什麼方法(庫或本機)使用打印API來打印XPS文檔?我嘗試了使用Document Toolkit API,這個工作達到了一定程度,但是當我嘗試設置PrintPageEventArgs.PageVisual
時,出現COM異常。Silverlight:以編程方式打印XPS
有什麼方法(庫或本機)使用打印API來打印XPS文檔?我嘗試了使用Document Toolkit API,這個工作達到了一定程度,但是當我嘗試設置PrintPageEventArgs.PageVisual
時,出現COM異常。Silverlight:以編程方式打印XPS
這應做到在本地代碼,不要忘了先啓用COM:
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);
}
什麼都Firstfloorsoftware說一下吧,當你問他們? – AnthonyWJones 2010-04-30 22:02:15
@AnthonyWJones異常是我的一個問題。他們表示,下一個版本將爲Silverlight 4和打印帶來官方支持。它還將爲由XPS打印機驅動程序生成的PathGeometry Figure屬性提供一種變通方法,這些屬性與Silverlight不兼容(我遇到的另一個問題)。所以我支持下一個版本。 – David 2010-05-03 22:33:27