c# - XpsDocument GetFixedDocumentSequence 为特定计算机生成的文件返回 null

标签 c# xps solidworks xpsdocument

Solidworks 生成“EDRWX”文件。通常,这些是 opened with微软 XPS 查看器。

问题:
应用程序使用 .net XPSDocument 打开它们并在打印前对它们进行一些操作。错误方法是“GetFixedDocumentSequence”。对于从特定计算机生成的文件,它返回 null。即使应用程序正在特定计算机上运行,​​它也会这样做。但是它可以很好地处理其他计算机生成的文件。

enter image description here

用XPS文档查看器打开文件时,提示无法打开。但是,它会在创建它的特定计算机上打开。如果这台电脑从microsoft word打印一个正常的XPS文件,其他电脑可以用XPS文档查看器正常打开它。此外,其他计算机生成的“EDRWX”文件可以在每台计算机(包括特定计算机)上使用 XPS 文档查看器轻松打开。

更多规范:
具体电脑运行在windows 8.1下。
其他计算机在 windows 7 下运行。
该应用程序使用 .net Framework 4.0 运行。

Here是由特定计算机生成的“EDRWX”虚拟文件。
Here是由其中一台计算机生成的“EDRWX”虚拟文件。

问题的原因是什么,如何解决?

旁注:我已经调查了将近 3 天....所以我对这个问题很生气。可能是你的眼睛能看到我看不到的东西,因为我被它深深吸引了。

在我的挖掘中,我发现了这两个文件之间的差异。 enter image description here

最佳答案

失败的 EDRWX 文件不是 XPS 文件,它们是 Open XPS 文件。这两种格式非常相似,但是正如您所发现的,XPSDocument 不支持 OpenXPS。我不知道有任何直接支持 Open XPS 的 .net API,但是微软确实发布了 standalone converter tools您也许可以利用。

另一种可能有效也可能无效的替代方法是尝试强制 SolidWorks 在故障机器上生成 xps 而不是 oxps。 solidworks 可能正在使用 xps 文档编写器生成这些文件,在这种情况下更改输出格式,如所述 here可能会解决问题。

关于c# - XpsDocument GetFixedDocumentSequence 为特定计算机生成的文件返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35438631/

相关文章:

c# - 如何用逗号格式化数字?

c# - 在这种情况下使用 SecureString 会提高安全性吗?

c# - ASP.NET MVC 自定义错误

c# - 在 WPF C# 应用程序中将 XPS 转换为 PDF

wpf - WPF中能否将多个xps文档合并为一个?

c# - 不通过使用 CSS 更改 Gridview 中的标题文本颜色

wpf - 有没有办法在我的 WPF 应用程序中使用 ODTTF 字体文件?

sql - 我有三个单独的内部联接语句,每个语句创建一个表。我可以将这三个组合起来制作一个主表吗?

unity3d - 有没有办法将solidworks文件作为 Assets 导入unity?

c# - 在 C# COM 项目中,我应该引用 DLL 还是 TLB? (主要是 SolidWorks)