XPSファイルを処理するWinFormsアプリケーションがあります。開いているダイアログでユーザーが選択したファイルがC#を使用している有効なXPSファイルであることを確認するにはどうすればよいですか?ファイルがC#で有効なXPSファイルであることを確認するにはどうすればよいですか?
実際にXPSファイルではない拡張子.XPSのファイルが存在します。
XPSファイルは実際にはPKZIP形式であるため、PKZIPバイトシグネチャを確認できますが、これはZIPアーカイブに誤認を与えます。
XPSファイルを処理するWinFormsアプリケーションがあります。開いているダイアログでユーザーが選択したファイルがC#を使用している有効なXPSファイルであることを確認するにはどうすればよいですか?ファイルがC#で有効なXPSファイルであることを確認するにはどうすればよいですか?
実際にXPSファイルではない拡張子.XPSのファイルが存在します。
XPSファイルは実際にはPKZIP形式であるため、PKZIPバイトシグネチャを確認できますが、これはZIPアーカイブに誤認を与えます。
次は、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;
}
}
ありがとうございます。よく働く。私のワークステーションからネットワーク共有上の621 MBのテストファイルをチェックするのに約33秒かかりました。私のテストで偽陽性を出さなかった。 – DaveB
ファイルの拡張子ではなくファイルの種類を確認できます。
そして、どのように "content type"をチェックしますか? –
HttpPostedFile.ContentType check PostedFile.ContentType.ToLower()=あなたが探しているMIMEタイプです。私は拡張子と内容の両方の種類を確認します 申し訳ありませんが、これはwebではないwinformsです – Brian
この記事を一見するには、http://msdn.microsoft.com/en-us/library/ms775147(v=vs。 85).aspx#introduction –
dup? http://stackoverflow.com/questions/3785784/how-to-validate-an-xps-document – kenny
ロードする - これが唯一の方法です。 – harold
@harold - そうです、それは私がしたいことです。コードサンプルがありますか?何らかの操作の後で特定の例外をチェックしますか? – DaveB