1

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

将存在带有 .XPS 扩展名的文件,这些文件并不是真正的 XPS 文件。

由于 XPS 文件实际上是 PKZIP 格式,因此我可以检查 PKZIP 字节签名,但这会在 ZIP 存档上产生误报。

4

2 回答 2

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;
    }
}
于 2012-04-14T07:03:01.877 回答
-2

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

于 2012-04-13T17:14:08.003 回答