예제 #1
0
        public void TestFloatingPictures()
        {
            HWPFDocument  doc      = HWPFTestDataSamples.OpenSampleFile("FloatingPictures.doc");
            PicturesTable pictures = doc.GetPicturesTable();

            // There are 19 images in the picture, but some are
            //  duplicate floating ones
            Assert.AreEqual(17, pictures.GetAllPictures().Count);

            int plain8s  = 0;
            int escher8s = 0;
            int image1s  = 0;

            Range r = doc.GetRange();

            for (int np = 0; np < r.NumParagraphs; np++)
            {
                Paragraph p = r.GetParagraph(np);
                for (int nc = 0; nc < p.NumCharacterRuns; nc++)
                {
                    CharacterRun cr = p.GetCharacterRun(nc);
                    if (pictures.HasPicture(cr))
                    {
                        image1s++;
                    }
                    else if (pictures.HasEscherPicture(cr))
                    {
                        escher8s++;
                    }
                    else if (cr.Text.StartsWith("\u0008"))
                    {
                        plain8s++;
                    }
                }
            }
            // Total is 20, as the 4 escher 8s all reference
            //  the same regular image
            Assert.AreEqual(16, image1s);
            Assert.AreEqual(4, escher8s);
            Assert.AreEqual(0, plain8s);
        }
예제 #2
0
        public void TestEmbededDocumentIcon()
        {
            // This file has two embeded excel files, an embeded powerpoint
            //   file and an embeded word file, in that order
            HWPFDocument doc = HWPFTestDataSamples.OpenSampleFile("word_with_embeded.doc");

            // Check we don't break loading the pictures
            doc.GetPicturesTable().GetAllPictures();
            PicturesTable pictureTable = doc.GetPicturesTable();

            // Check the Text, and its embeded images
            Paragraph p;
            Range     r = doc.GetRange();

            Assert.AreEqual(1, r.NumSections);
            Assert.AreEqual(5, r.NumParagraphs);

            p = r.GetParagraph(0);
            Assert.AreEqual(2, p.NumCharacterRuns);
            Assert.AreEqual("I have lots of embedded files in me\r", p.Text);
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(0)));
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(1)));

            p = r.GetParagraph(1);
            Assert.AreEqual(5, p.NumCharacterRuns);
            Assert.AreEqual("\u0013 EMBED Excel.Sheet.8  \u0014\u0001\u0015\r", p.Text);
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(0)));
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(1)));
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(2)));
            Assert.AreEqual(true, pictureTable.HasPicture(p.GetCharacterRun(3)));
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(4)));

            p = r.GetParagraph(2);
            Assert.AreEqual(6, p.NumCharacterRuns);
            Assert.AreEqual("\u0013 EMBED Excel.Sheet.8  \u0014\u0001\u0015\r", p.Text);
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(0)));
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(1)));
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(2)));
            Assert.AreEqual(true, pictureTable.HasPicture(p.GetCharacterRun(3)));
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(4)));
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(5)));

            p = r.GetParagraph(3);
            Assert.AreEqual(6, p.NumCharacterRuns);
            Assert.AreEqual("\u0013 EMBED PowerPoint.Show.8  \u0014\u0001\u0015\r", p.Text);
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(0)));
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(1)));
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(2)));
            Assert.AreEqual(true, pictureTable.HasPicture(p.GetCharacterRun(3)));
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(4)));
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(5)));

            p = r.GetParagraph(4);
            Assert.AreEqual(6, p.NumCharacterRuns);
            Assert.AreEqual("\u0013 EMBED Word.Document.8 \\s \u0014\u0001\u0015\r", p.Text);
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(0)));
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(1)));
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(2)));
            Assert.AreEqual(true, pictureTable.HasPicture(p.GetCharacterRun(3)));
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(4)));
            Assert.AreEqual(false, pictureTable.HasPicture(p.GetCharacterRun(5)));

            // Look at the pictures table
            List <Picture> pictures = pictureTable.GetAllPictures();

            Assert.AreEqual(4, pictures.Count);

            Picture picture = pictures[0];

            Assert.AreEqual("", picture.SuggestFileExtension());
            Assert.AreEqual("0", picture.SuggestFullFileName());
            Assert.AreEqual("image/unknown", picture.MimeType);

            picture = pictures[1];
            Assert.AreEqual("", picture.SuggestFileExtension());
            Assert.AreEqual("469", picture.SuggestFullFileName());
            Assert.AreEqual("image/unknown", picture.MimeType);

            picture = pictures[2];
            Assert.AreEqual("", picture.SuggestFileExtension());
            Assert.AreEqual("8c7", picture.SuggestFullFileName());
            Assert.AreEqual("image/unknown", picture.MimeType);

            picture = pictures[3];
            Assert.AreEqual("", picture.SuggestFileExtension());
            Assert.AreEqual("10a8", picture.SuggestFullFileName());
            Assert.AreEqual("image/unknown", picture.MimeType);
        }