OpenXPS 列印的應用程式支援
OpenXPS 是檔的 Open XML Paper Specification 格式,是以歐洲電腦製造商協會 (ECMA) 標準規格為基礎。
Windows 8透過 v4 列印驅動程式模型提供 OpenXPS 列印的完整支援,並存支援 Microsoft XPS 格式。 本主題著重于與 Windows 應用程式開發人員相關的此支援部分。 如需 OpenXPS 支援的驅動程式需求相關資訊,請參閱 OpenXPS 的驅動程式支援。
將 XPS 資料傳送至列印系統
我們建議您使用 IPrintDocumentPackageTarget 將所有 XPS 列印工作傳送至列印系統。 IPrintDocumentPackageTarget 接受 XPS 物件模型 (OM) 而不序列化,這有助於改善整體效能。
以下是 IPrintDocumentPackageTarget 介面的簡短摘要:
此介面支援從量身打造的解決方案以及桌面應用程式進行列印。
針對傳統型應用程式,這可用來取代 StartXpsPrintJob1。
在 Windows 7 上提供 Service Pack 1 (SP1) + 平臺更新,以及Windows 8。
在專案中加入 DocumentTarget.h ,以使用這些 API。
使用 OpenXPS 檔的應用程式應該注意 OpenXPS 的 MIME 類型如下所示:
- application\\oxps
將 OpenXPS 資料傳送至 XPS 列印 API
針對 OpenXPS,XPS OM 接受 MSXPS 和 OpenXPS,並提供轉換和序列化為任一格式的方法。 這可讓應用程式開發人員視需要與目標驅動程式無關。 這也表示應用程式開發人員一律可以將列印工作當做 XPS OM 提交至 StartXpsPrintJob1 或 IDocumentPackageTarget,知道列印系統會處理任何必要的轉換。
當然,防止 XPS 格式之間的轉換可改善端對端效能。 開發人員可以從應用程式檢查下列登錄機碼,以判斷目標列印驅動程式的慣用 XPS 格式:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\[PrintDriverName]\PrintDriverData\XpsFormat
判斷慣用的 XPS 格式之後,應用程式可以提供不需要轉換的 XPS OM 物件。 特別注意的是,在 MSXPS 中使用 HD 相片和 OpenXPS 中的 JPEGXR。 從 JPEGXR 轉換為 HD 相片相當輕量,因為此轉換的主要差異在於 HD Photo 會忽略 JPEGXR 所需的 4 個控制位。 不過,從 HD 相片轉換成 JPEGXR 需要重新編碼整個影像,才能產生所需的控制位。 因此,為高解析度影像提供 JPEGXR 影像可確保與 OpenXPS 的相容性,並將 MSXPS 影像的轉換成本降到最低。
Xpsobjectmodel_1.h標頭會定義 OpenXPS 的其他 API 和物件。 而且 IXpsOMObjectFactory1 介面會提供額外的影像轉換方法。 以下是語法:
IXpsOMObjectFactory1->ConvertHDPhotoToJpegXR(IXpsOMImageResource *imageResource);
IXpsOMObjectFactory1->ConvertJpegXRToHDPhoto(IXpsOMImageResource *imageResource);
Windows 8提供下列新的和更新的列舉。
新的列舉:
已更新列舉
新的 GetDocumentType 方法可讓應用程式判斷檔的 XPS 格式。 這些可在 IXpsOMObjectFactory1、 IXpsOMPackage1和 IXpsOMPage1中使用。 以下是方法的清單。
IXpsOMObjectFactory1::GetDocumentTypeFromFile
IXpsOMObjectFactory1::GetDocumentTypeFromStream
IXpsOMPackage1::GetDocumentType
IXpsOMPage1::GetDocumentType
Windows 8提供下列支援 OpenXPS 的新錯誤碼:
- XPS\_E\_MISMATCHED\_NAMESPACE。
- 如果命名空間不相符,則會傳回此錯誤。
- 如果 MSXPS 在內部參考中使用絕對 URI,或嘗試使用內部參考在資料流程中序列化,就會傳回此錯誤。 這是因為 XPS OM 會產生相對 URI。 雖然 MSXPS 同時支援相對和絕對 URI,但 OpenXPS 需要相對 URI。
相關主題