我有一个处理XPS文件的WinForms应用程序。如何使用C#检查用户在打开的对话框中选择的文件是否为有效的XPS文件?
将存在扩展名为.XPS的文件,这些文件实际上不是XPS文件。
由于XPS文件实际上是PKZIP格式的,所以我可以检查PKZIP字节签名,但这会对ZIP存档产生误报。
发布于 2012-04-14 15:03:02
下面将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-14 01:14:08
您可以检查文件的内容类型,而不是文件扩展名。
https://stackoverflow.com/questions/10145247
复制相似问题