C# 识别xps文件

C# 识别xps文件,c#,xps,C#,Xps,可能重复: 如果向我传递了流或没有扩展名的文件,我如何识别XPS文件?我知道XPS文件是zip文件,所以我可以在开始时查找zip幻码,但如何识别XPS文件 根据我所做的研究,我认为我需要提取并查看[Content\u Types].xml,但一旦我进入了[Content\u Types].xml,我就不太清楚我需要查找什么了。我认为在大多数情况下,只要检查[Content\u Types].xml就可以了。有人可能会向您传递一个zip文件,其中包含一个名为这样的文件,但不包含您希望它作为XPS

可能重复:

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


根据我所做的研究,我认为我需要提取并查看[Content\u Types].xml,但一旦我进入了[Content\u Types].xml,我就不太清楚我需要查找什么了。

我认为在大多数情况下,只要检查
[Content\u 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
文件

希望有帮助/相关链接:


通常,检查这一点的一种方法是分析标头和第一个十六进制值。xps文件是具有特定内容的zip文件。因此,我可以检查zip签名,但我的问题是我在内容中查找什么。我将尝试fdseq,但稍后当我靠近我的电脑时。我不能只检查内容类型,因为xps与ms office XML格式共享其文件格式,所以它们都有一个内容类型文件。如果是内容类型,我也会继续研究内容。