Exemplo n.º 1
0
        public void TestParseOgg()
        {
            string          path    = Path.GetFullPath(TestDataSample.GetAudioPath("sample.ogg"));
            ParserContext   context = new ParserContext(path);
            IMetadataParser parser  = (IMetadataParser)ParserFactory.CreateMetadata(context);
            ToxyMetadata    x       = parser.Parse();

            Assert.AreEqual(15, x.Count);
        }
Exemplo n.º 2
0
        public void TestParseMp3_Id3v1Only()
        {
            string          path    = Path.GetFullPath(TestDataSample.GetAudioPath("sample_v1_only.mp3"));
            ParserContext   context = new ParserContext(path);
            IMetadataParser parser  = (IMetadataParser)ParserFactory.CreateMetadata(context);
            ToxyMetadata    x       = parser.Parse();

            Assert.AreEqual(11, x.Count);
        }
Exemplo n.º 3
0
        public void TestPowerPoint()
        {
            string          path    = Path.GetFullPath(TestDataSample.GetOLE2Path("Test_Humor-Generation.ppt"));
            ParserContext   context = new ParserContext(path);
            IMetadataParser parser  = (IMetadataParser)ParserFactory.CreateMetadata(context);
            ToxyMetadata    x       = parser.Parse();

            Assert.AreEqual(8, x.Count);
            Assert.AreEqual("Funny Factory", x.Get("Title").Value);
        }
Exemplo n.º 4
0
        public void TestExcelFile()
        {
            string          path    = Path.GetFullPath(TestDataSample.GetExcelPath("comments.xls"));
            ParserContext   context = new ParserContext(path);
            IMetadataParser parser  = (IMetadataParser)ParserFactory.CreateMetadata(context);
            ToxyMetadata    x       = parser.Parse();

            Assert.AreEqual(8, x.Count);
            Assert.AreEqual("Microsoft Excel", x.Get("ApplicationName").Value);
        }
Exemplo n.º 5
0
        public void TestSolidWorksFile()
        {
            string          path    = Path.GetFullPath(TestDataSample.GetOLE2Path("TestSolidWorks.sldprt"));
            ParserContext   context = new ParserContext(path);
            IMetadataParser parser  = (IMetadataParser)ParserFactory.CreateMetadata(context);
            ToxyMetadata    x       = parser.Parse();

            Assert.AreEqual(10, x.Count);
            Assert.AreEqual("{F29F85E0-4FF9-1068-AB91-08002B27B3D9}", x.Get("ClassID").Value);
            Assert.AreEqual("scj", x.Get("LastAuthor").Value);
        }
Exemplo n.º 6
0
        public void TestCorelDrawFile()
        {
            string          path    = Path.GetFullPath(TestDataSample.GetOLE2Path("TestCorel.shw"));
            ParserContext   context = new ParserContext(path);
            IMetadataParser parser  = (IMetadataParser)ParserFactory.CreateMetadata(context);
            ToxyMetadata    x       = parser.Parse();

            Assert.AreEqual(6, x.Count);
            Assert.AreEqual("thorsteb", x.Get("Author").Value);
            Assert.AreEqual("thorsteb", x.Get("LastAuthor").Value);
        }
Exemplo n.º 7
0
        public void TestXlsx()
        {
            string          path    = Path.GetFullPath(TestDataSample.GetOOXMLPath("sample.xlsx"));
            ParserContext   context = new ParserContext(path);
            IMetadataParser parser  = (IMetadataParser)ParserFactory.CreateMetadata(context);
            ToxyMetadata    x       = parser.Parse();

            Assert.AreEqual(4, x.Count);
            Assert.AreEqual("Microsoft Excel", x.Get("Application").Value);
            Assert.AreEqual("12.0000", x.Get("AppVersion").Value);
        }
Exemplo n.º 8
0
        public void TestDocx()
        {
            string          path    = Path.GetFullPath(TestDataSample.GetOOXMLPath("MultipleCoreProperties.docx"));
            ParserContext   context = new ParserContext(path);
            IMetadataParser parser  = (IMetadataParser)ParserFactory.CreateMetadata(context);
            ToxyMetadata    x       = parser.Parse();

            Assert.AreEqual(12, x.Count);
            Assert.AreEqual("Format", x.Get("Title").Value);
            Assert.AreEqual("Microsoft Macintosh Word", x.Get("Application").Value);
        }
Exemplo n.º 9
0
        public void TestPptx()
        {
            string          path    = Path.GetFullPath(TestDataSample.GetOOXMLPath("SampleShow.pptx"));
            ParserContext   context = new ParserContext(path);
            IMetadataParser parser  = (IMetadataParser)ParserFactory.CreateMetadata(context);
            ToxyMetadata    x       = parser.Parse();

            Assert.AreEqual(8, x.Count);
            Assert.AreEqual("SlideShow Sample", x.Get("Title").Value);
            Assert.AreEqual("Microsoft Office PowerPoint", x.Get("Application").Value);
        }
Exemplo n.º 10
0
        public void TestParseGifWithComment()
        {
            string          path    = Path.GetFullPath(TestDataSample.GetImagePath("sample_gimp.gif"));
            ParserContext   context = new ParserContext(path);
            IMetadataParser parser  = (IMetadataParser)ParserFactory.CreateMetadata(context);
            ToxyMetadata    x       = parser.Parse();

            Assert.AreEqual(4, x.Count);
            Assert.AreEqual(37, x.Get("PhotoHeight").Value);
            Assert.AreEqual(12, x.Get("PhotoWidth").Value);
            Assert.AreEqual("Created with GIMP", x.Get("Comment").Value);
            Assert.AreEqual("Created with GIMP", x.Get("GifComment").Value);
        }
Exemplo n.º 11
0
        public void TestParseTiff()
        {
            string          path    = Path.GetFullPath(TestDataSample.GetImagePath("sample_gimp.tiff"));
            ParserContext   context = new ParserContext(path);
            IMetadataParser parser  = (IMetadataParser)ParserFactory.CreateMetadata(context);
            ToxyMetadata    x       = parser.Parse();

            Assert.AreEqual(97, x.Count);
            Assert.AreEqual(10, x.Get("PhotoHeight").Value);
            Assert.AreEqual(10, x.Get("PhotoWidth").Value);
            Assert.AreEqual("Test", x.Get("Comment").Value);
            Assert.AreEqual("28/10", x.Get("FNumber").Value);
            Assert.AreEqual("0", x.Get("Rating").Value);
            Assert.AreEqual("+150", x.Get("Tint").Value);
            Assert.AreEqual("5", x.Get("Shadows").Value);
        }
Exemplo n.º 12
0
        public void TestWord()
        {
            string          path    = Path.GetFullPath(TestDataSample.GetOLE2Path("TestEditTime.doc"));
            ParserContext   context = new ParserContext(path);
            IMetadataParser parser  = (IMetadataParser)ParserFactory.CreateMetadata(context);
            ToxyMetadata    x       = parser.Parse();

            Assert.AreEqual(18, x.Count);

            path    = Path.GetFullPath(TestDataSample.GetOLE2Path("TestChineseProperties.doc"));
            context = new ParserContext(path);
            parser  = (IMetadataParser)ParserFactory.CreateMetadata(context);
            x       = parser.Parse();
            Assert.AreEqual(18, x.Count);
            Assert.AreEqual("雅虎網站分類", x.Get("Comments").Value);
            Assert.AreEqual("參考資料", x.Get("Title").Value);
        }
Exemplo n.º 13
0
        public void TestParseJpegWithXmp()
        {
            string          path    = Path.GetFullPath(TestDataSample.GetImagePath("sample_nikon1.jpg"));
            ParserContext   context = new ParserContext(path);
            IMetadataParser parser  = (IMetadataParser)ParserFactory.CreateMetadata(context);
            ToxyMetadata    x       = parser.Parse();

            Assert.AreEqual(17, x.Count);
            Assert.AreEqual(3008, x.Get("PhotoHeight").Value);
            Assert.AreEqual(96, x.Get("PhotoQuality").Value);
            Assert.AreEqual(2000, x.Get("PhotoWidth").Value);
            Assert.AreEqual("NIKON D70", x.Get("Model").Value);
            Assert.AreEqual("Kirche Sulzbach", x.Get("Keywords").Value);
            Assert.AreEqual("1", x.Get("Rating").Value);
            Assert.AreEqual("2009-08-04T20:42:36Z", x.Get("DateAcquired").Value);
            Assert.AreEqual("Microsoft Windows Photo Gallery 6.0.6001.18000", x.Get("Software").Value);
            Assert.AreEqual("Microsoft Windows Photo Gallery 6.0.6001.18000", x.Get("creatortool").Value);
        }
Exemplo n.º 14
0
        public void TestParseJpeg()
        {
            string          path    = Path.GetFullPath(TestDataSample.GetImagePath("sample_sony1.jpg"));
            ParserContext   context = new ParserContext(path);
            IMetadataParser parser  = (IMetadataParser)ParserFactory.CreateMetadata(context);
            ToxyMetadata    x       = parser.Parse();

            Assert.AreEqual(12, x.Count);
            Assert.AreEqual(2592, x.Get("PhotoHeight").Value);
            Assert.AreEqual(95, x.Get("PhotoQuality").Value);
            Assert.AreEqual(3872, x.Get("PhotoWidth").Value);
            Assert.AreEqual("DSLR-A200", x.Get("Model").Value);
            Assert.AreEqual((uint)400, x.Get("ISOSpeedRatings").Value);
            Assert.AreEqual(5.6, x.Get("FNumber").Value);
            Assert.AreEqual((double)35, x.Get("FocalLength").Value);
            Assert.AreEqual((uint)52, x.Get("FocalLengthIn35mmFilm").Value);
            Assert.AreEqual(new DateTime(2009, 11, 21, 12, 39, 39), x.Get("DateTime").Value);
        }
Exemplo n.º 15
0
        static int Main(string[] args)
        {
            try
            {
                Console.OutputEncoding = Encoding.UTF8;

                var encoding = "UTF-8";
                var flags    = Flags.None;
                var caught   = Flags.None;

                var arguments = new ArrayList(args);
                int i;
                if ((i = arguments.IndexOf("/encoding")) != -1)
                {
                    arguments.RemoveAt(i);
                    if (i < arguments.Count)
                    {
                        encoding = (string)arguments[i];
                        arguments.RemoveAt(i);
                    }
                }
                if ((i = arguments.IndexOf("/text")) != -1)
                {
                    arguments.RemoveAt(i);
                    flags |= Flags.Text;
                }
                if ((i = arguments.IndexOf("/metadata")) != -1)
                {
                    arguments.RemoveAt(i);
                    flags |= Flags.Metadata;
                }

                if (arguments.Count != 1)
                {
                    Console.WriteLine(Usage);
                    return(arguments.Count);
                }

                var filepath = (string)arguments[0];

                ParserContext context = new ParserContext(filepath);
                context.Encoding = Encoding.GetEncoding(encoding);

                ITextParser tparser = null;
                if (flags == Flags.None || (flags & Flags.Text) != 0)
                {
                    try
                    {
                        tparser = ParserFactory.CreateText(context);
                    }
                    catch (Exception e)
                    {
                        if (flags == Flags.None)
                        {
                            flags = Flags.Metadata;
                        }
                        else
                        {
                            caught |= Flags.Text;
                            Console.WriteLine(e);
                        }
                    }
                }

                if ((flags & Flags.Metadata) != 0)
                {
                    try
                    {
                        var parser = ParserFactory.CreateMetadata(context);
                        Console.WriteLine(string.Format("[{0}]", parser.GetType().Name));
                        var metadatas = parser.Parse();
                        foreach (var data in metadatas)
                        {
                            Console.WriteLine(string.Format("{0} = {1}", data.Name.PadRight(23), data.Value.ToString()));
                        }
                        Console.WriteLine();
                    }
                    catch (Exception e)
                    {
                        caught |= Flags.Metadata;
                        Console.WriteLine(e);
                    }
                }

                if (tparser != null)
                {
                    try
                    {
                        if ((flags & Flags.Text) != 0)
                        {
                            Console.WriteLine(string.Format("[{0}]", tparser.GetType().Name));
                        }
                        var text = tparser.Parse();
                        if (text.EndsWith("\r")) // as seems to happen with .doc files
                        {
                            text = text.Replace('\r', '\n');
                        }
                        Console.Write(text);
                    }
                    catch (Exception e)
                    {
                        caught |= Flags.Text;
                        Console.WriteLine(e);
                    }
                }

                return((int)caught);
            }
            catch (Exception e)
            {
                Console.Write(e);
                return(-1);
            }
        }
Exemplo n.º 16
0
        private void ShowDocument(string filepath, string encoding, string extension)
        {
            ParserContext context = new ParserContext(filepath);

            context.Encoding = Encoding.GetEncoding(encoding);

            if (Mode == ViewMode.Text)
            {
                AppendRichTextBox();
                var tparser = ParserFactory.CreateText(context);
                rtbPanel.Text     = tparser.Parse();
                tbParserType.Text = tparser.GetType().Name;
            }
            else if (Mode == ViewMode.Structured)
            {
                switch (extension)
                {
                case ".csv":
                    AppendSpreadsheetGrid();
                    context.Properties.Add("HasHeader", "1");
                    ISpreadsheetParser csvparser = ParserFactory.CreateSpreadsheet(context);
                    ss = csvparser.Parse();
                    tbParserType.Text = csvparser.GetType().Name;
                    var table1 = ss.Tables[0];
                    ShowToGrid(table1);
                    cbSheets.Items.Clear();
                    foreach (var table in ss.Tables)
                    {
                        cbSheets.Items.Add(table.Name);
                    }
                    cbSheets.SelectedIndex = 0;
                    panel1.Visible         = true;
                    break;

                case ".xlsx":
                case ".xls":
                    AppendSpreadsheetGrid();
                    ISpreadsheetParser ssparser = ParserFactory.CreateSpreadsheet(context);
                    ss = ssparser.Parse();
                    tbParserType.Text = ssparser.GetType().Name;
                    var table0 = ss.Tables[0];
                    ShowToGrid(table0);
                    cbSheets.Items.Clear();
                    foreach (var table in ss.Tables)
                    {
                        cbSheets.Items.Add(table.Name);
                    }
                    cbSheets.SelectedIndex = 0;
                    panel1.Visible         = true;
                    break;

                case ".vcf":
                    AppendDataGridView();
                    var vparser = ParserFactory.CreateVCard(context);
                    ToxyBusinessCards vcards = vparser.Parse();
                    tbParserType.Text             = vparser.GetType().Name;
                    gridPanel.GridView.DataSource = vcards.ToDataTable().DefaultView;
                    break;

                case ".pptx":
                    //TODO: show slides
                    break;

                case ".xml":
                case ".htm":
                case ".html":
                    AppendTreePanel();
                    var      domparser = ParserFactory.CreateDom(context);
                    ToxyDom  htmlDom   = domparser.Parse();
                    TreeNode rootNode  = treePanel.Tree.Nodes.Add(htmlDom.Root.NodeString);
                    treePanel.Tree.BeginUpdate();
                    AppendTree(rootNode, htmlDom.Root);
                    treePanel.Tree.EndUpdate();
                    //rootNode.ExpandAll();
                    break;
                }
            }
            else
            {
                AppendPropertyListPanel();
                var          tparser   = ParserFactory.CreateMetadata(context);
                ToxyMetadata metadatas = tparser.Parse();
                plPanel.Clear();
                foreach (var data in metadatas)
                {
                    plPanel.AddItem(data.Name, data.Value.ToString());
                }
                tbParserType.Text = tparser.GetType().Name;
            }
        }