可能重复:
How Can I Check That A File Is A Valid XPS File With C#?识别XPS文件
如何识别XPS文件,如果我过流或不带扩展名的文件?我知道XPS文件是zip文件,所以我可以在开始时查找ZIP幻数,但我如何识别XPS文件?
从我已经完成的研究中,我认为我需要提取并查看[Content_Types] .xml,但它不是(太)显而易见我需要查找的内容。
可能重复:
How Can I Check That A File Is A Valid XPS File With C#?识别XPS文件
如何识别XPS文件,如果我过流或不带扩展名的文件?我知道XPS文件是zip文件,所以我可以在开始时查找ZIP幻数,但我如何识别XPS文件?
从我已经完成的研究中,我认为我需要提取并查看[Content_Types] .xml,但它不是(太)显而易见我需要查找的内容。
我认为在大多数情况下,您只需检查[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格式共享其文件格式,因此它们都具有内容类型文件。如果内容类型,我还会继续研究内容。 – making
通常,检查这个的一种方法是分析头和第一个HEX值。 – user1717079
xps文件是包含特定内容的zip文件。所以我可以检查一个zip签名,但我的问题是我在内容中寻找什么。 – making