определение файла xps

Возможный дубликат:
Как я могу проверить, что файл является допустимым файлом XPS с помощью C#?

Как идентифицировать файл XPS, если мне передается поток или файл без расширения? Я знаю, что файлы XPS представляют собой zip-файлы, поэтому я могу искать магический номер ZIP в начале, но как я могу идентифицировать файл XPS?

Из проведенного мной исследования я думаю, что мне нужно извлечь и посмотреть в [Content_Types].xml, но не (слишком) очевидно, что мне нужно искать, когда я там.


person making    schedule 14.10.2012    source источник
comment
обычно один из способов проверить это — проанализировать заголовок и первые шестнадцатеричные значения.   -  person user1717079    schedule 14.10.2012
comment
Файл xps представляет собой zip-файл с определенным содержимым. Так что я могу проверить подпись почтового индекса, но моя проблема в том, что я ищу в содержимом.   -  person making    schedule 14.10.2012


Ответы (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.

Надеюсь, полезные/актуальные ссылки:

person Adam Lear    schedule 14.10.2012
comment
Попробую fdseq, но когда я подойду к своему компьютеру позже. Я не могу просто проверить типы контента, так как xps разделяет свой формат файла с форматом MS Office XML, поэтому все они имеют файл типа контента. Я также продолжу исследование содержимого, если тип контента. - person making; 14.10.2012