如何使用C#检查文件是否为有效的XPS文件?

时间:2012-04-13 17:10:13

标签: c# xps

我有一个处理XPS文件的WinForms应用程序。如何检查用户在打开的对话框中选择的文件是否是使用C#的有效XPS文件?

.XPS扩展名中存在的文件实际上不是XPS文件。

由于XPS文件实际上是PKZIP格式,我可以检查PKZIP字节签名,但这会给ZIP存档带来误报。

2 个答案:

答案 0 :(得分:2)

以下内容将XPS文件与其他ZIP存档和非ZIP文件区分开来。它不会确定文件是否是完全有效的XPS - 因为您需要加载每个页面。

using System;
using System.IO;
using System.Windows.Xps.Packaging;

class Tester
{
    public static bool IsXps(string filename)
    {
        try
        {
            XpsDocument x = new XpsDocument(filename, FileAccess.Read);

            IXpsFixedDocumentSequenceReader fdsr = x.FixedDocumentSequenceReader;

            // Needed to actually try to find the FixedDocumentSequence
            Uri uri = fdsr.Uri;

            return true;
        }
        catch (Exception)
        {
        }

        return false;
    }
}

答案 1 :(得分:-2)

您可以检查文件的内容类型而不是文件扩展名。