【问题标题】:identifying xps file [duplicate]识别xps文件[重复]
【发布时间】:2012-10-15 07:37:52
【问题描述】:

可能重复:
How Can I Check That A File Is A Valid XPS File With C#?

如果我传递了一个流或一个没有扩展名的文件,如何识别 XPS 文件?我知道 XPS 文件是 zip 文件,所以我可以在开始时查找 ZIP 幻数,但是如何识别 XPS 文件?

根据我所做的研究,我认为我需要提取并查看 [Content_Types].xml,但我需要在其中查找的内容并不(太)明显。

【问题讨论】:

  • 通常,检查这一点的一种方法是分析标题和第一个 HEX 值。
  • xps 文件是具有特定内容的 zip 文件。所以我可以检查一个 zip 签名,但我的问题是我在内容中寻找什么。

标签: c# xps


【解决方案1】:

我认为在大多数情况下,您只需检查[Content_Types].xml 就可以了。有人可能会向您传递一个 zip 文件,其中包含一个类似名称的文件,但不包含您希望它作为 XPS 文档的一部分包含的信息,但这种可能性有多大?文件名非常具体,对我来说不太可能产生意外冲突。

但如果您想更加确定,您可以检查 XML 文件是否符合预期的架构。您通常应该会看到如下内容:

<?xml version="1.0" encoding="utf-8"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
    <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
    <Default Extension="fdseq" ContentType="application/vnd.ms-package.xps-fixeddocumentsequence+xml"/>
    <Default Extension="fdoc" ContentType="application/vnd.ms-package.xps-fixeddocument+xml"/>
    <Default Extension="xml" ContentType="application/vnd.ms-printing.printticket+xml"/>
    <Default Extension="JPG" ContentType="image/jpeg"/>
    <Default Extension="fpage" ContentType="application/vnd.ms-package.xps-fixedpage+xml"/>
    <Default Extension="dict" ContentType="application/vnd.ms-package.xps-resourcedictionary+xml"/>
</Types>

您还可以检查所需的FixedDocumentSequence.fdseq 文件。

希望有帮助/相关链接:

【讨论】:

  • 将尝试 fdseq 但稍后当我靠近我的电脑时。我不能只检查内容类型,因为 xps 与 ms office XML 格式共享其文件格式,因此它们都有一个内容类型文件。内容类型我也会继续研究。
猜你喜欢
  • 2014-03-19
  • 1970-01-01
  • 2021-02-26
  • 1970-01-01
  • 2015-08-11
  • 2011-12-14
  • 1970-01-01
  • 2014-09-22
  • 2010-11-11
相关资源
最近更新 更多