You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需打印队列,Direct2D能否直接生成XPS文件?

Direct2D打印与XPS文档直接创建的解决方案
  • 无法绕过打印队列直接创建ID2D1PrintControl:ID2D1Device::CreatePrintControl的设计逻辑依赖打印队列或IPrintDocumentPackageTarget接口,微软未公开类似ID2D1DeviceMagic::CreatePrintControlOnStream这类直接绑定流或XPS OM的私有/扩展接口,所有公开的Direct2D打印API都要求传入打印队列相关参数或合法的IPrintDocumentPackageTarget实例。

  • 无打印队列生成XPS的替代方案:

    • 利用IPrintDocumentPackageTargetFactory::CreateDocumentPackageTargetForXps创建基于文件或IStream的IPrintDocumentPackageTarget,无需实际打印队列;
    • 将该目标传入ID2D1Device::CreatePrintControl,Direct2D会自动将内容渲染为XPS格式并写入指定的文件/流;
    • 若需直接操作XPS OM对象(如绑定到IXpsOMPage),可先通过上述方式生成XPS流,再用XPS OM API加载后修改;或直接通过XPS OM API构建文档结构,再获取对应页面的ID2D1DeviceContext进行渲染。
  • 针对ID2D1DeviceContext的直接创建:可以直接获取用于XPS页面渲染的设备上下文,但需通过XPS OM的IDXpsOMDeviceContext接口间接获取,流程上是先初始化XPS文档对象,再关联D2D设备,而非通过Direct2D打印控制接口创建。

内容的提问来源于stack exchange,提问作者Mitch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 11:41:03