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 に答える