Exemple #1
0
        public void ObtainIntegerNumber(string fragment, int?expected)
        {
            /// 7.3.3 Numeric Objects
            byte[]    bytes = System.Text.UTF8Encoding.UTF8.GetBytes(fragment);
            Tokenizer feed  = new Tokenizer(new MemoryStream(bytes));

            Objectizer objectizer = new Objectizer(feed);

            IntegerObject actual = (IntegerObject)objectizer.NextObject();

            Assert.Equal(expected, actual.IntValue);
        }
Exemple #2
0
        public void ObtainLiteralStringWithBalancedParenthesis(string fragment, string expected)
        {
            // 7.3.4 String objects
            var bytes = System.Text.UTF8Encoding.UTF8.GetBytes(fragment);
            var feed  = new Tokenizer(new MemoryStream(bytes));

            var objectizer = new Objectizer(feed);

            var actual = (StringObject)objectizer.NextObject();

            Assert.Equal(expected, actual.Value);
        }
Exemple #3
0
        public void ReadArrayWithNoElements()
        {
            // 7.3.6 Array Objects
            string fragment = @"[]";

            byte[]     bytes      = System.Text.UTF8Encoding.UTF8.GetBytes(fragment);
            Tokenizer  feed       = new Tokenizer(new MemoryStream(bytes));
            Objectizer objectizer = new Objectizer(feed);

            var actual = (ArrayObject)objectizer.NextObject();

            actual.Childs <PdfObject>().Should().BeEmpty();
        }
Exemple #4
0
        public void ReadHexadecimalStringsFillingWithZeroes(string fragment, string expected)
        {
            // 7.3.4.3 Hexadecimal Strings
            // EXAMPLE 2
            var bytes = System.Text.UTF8Encoding.UTF8.GetBytes(fragment);
            var feed  = new Tokenizer(new MemoryStream(bytes));

            var objectizer = new Objectizer(feed);

            var actual = (StringObject)objectizer.NextObject();

            Assert.Equal(expected, actual.Value);
        }
Exemple #5
0
        public void UseReverseSolidusAsOctalWith3_2Or1NumberInLiteralString(string fragment, string expected)
        {
            // 7.3.4.2 Literal Strings
            // EXAMPLE 5
            var bytes = System.Text.UTF8Encoding.UTF8.GetBytes(fragment);
            var feed  = new Tokenizer(new MemoryStream(bytes));

            var objectizer = new Objectizer(feed);

            var actual = (StringObject)objectizer.NextObject();

            Assert.Equal(expected, actual.Value);
        }
Exemple #6
0
        public void ReadIndirectReference()
        {
            // 7.3.10 Indirect Objects
            string fragment = @"1 0 R";

            byte[] bytes      = System.Text.UTF8Encoding.UTF8.GetBytes(fragment);
            var    feed       = new Tokenizer(new MemoryStream(bytes));
            var    objectizer = new Objectizer(feed);

            var actual = (IndirectReferenceObject)objectizer.NextObject();

            Assert.Empty(actual.Childs <PdfObject>());

            Assert.Equal(1, actual.Number);
            Assert.Equal(0, actual.Generation);
        }
Exemple #7
0
        [InlineData("<</Length 10>>stream\n0123456789endstream")] // is not completely valid, but some writers do
        public void ReadStreams(string fragment)
        {
            // 7.3.8 Stream Objects
            byte[]     bytes      = System.Text.UTF8Encoding.UTF8.GetBytes(fragment);
            Tokenizer  feed       = new Tokenizer(new MemoryStream(bytes));
            Objectizer objectizer = new Objectizer(feed);

            DictionaryObject actual = (DictionaryObject)objectizer.NextObject();

            Assert.Equal(2, actual.Childs <PdfObject>().Length);


            Assert.Equal("Length", actual.Child <NameObject>(0).Value);
            Assert.Equal(10, actual.Child <IntegerObject>(1).IntValue);

            Assert.Equal(System.Text.UTF8Encoding.UTF8.GetBytes("0123456789"), actual.Stream);
        }
Exemple #8
0
        public void ReadArray(string fragment)
        {
            // 7.3.6 Array Objects
            byte[] bytes      = System.Text.UTF8Encoding.UTF8.GetBytes(fragment);
            var    feed       = new Tokenizer(new MemoryStream(bytes));
            var    objectizer = new Objectizer(feed);

            var actual = (ArrayObject)objectizer.NextObject();

            Assert.Equal(5, actual.Childs <PdfObject>().Length);

            Assert.Equal(549, actual.Child <IntegerObject>(0).IntValue);
            Assert.Equal(3.14f, actual.Child <RealObject>(1).Value);
            Assert.False(actual.Child <BooleanObject>(2).Value);
            Assert.Equal("Ralph", actual.Child <StringObject>(3).Value);
            Assert.Equal("SomeName", actual.Child <NameObject>(4).Value);
        }
Exemple #9
0
        public IndirectObject(Tokenizer tokenizer)
        {
            ReadNumber(tokenizer.TokenExcludedCommentsAndWhitespaces(), ref number);
            ExpectAWhiteSpace(tokenizer.TokenExcludedComments());
            ReadNumber(tokenizer.TokenExcludedComments(), ref generation);
            if (generation < 0)
            {
                throw new PdfException(PdfExceptionCodes.INVALID_GENERATION, "Generation must be positive");
            }

            ExpectAText(tokenizer.TokenExcludedCommentsAndWhitespaces(), "obj");

            Objectizer analyzeChilds = new Objectizer(tokenizer);

            childs.Add(analyzeChilds.NextObject());

            ExpectAText(tokenizer.TokenExcludedCommentsAndWhitespaces(), "endobj");
        }
Exemple #10
0
        public void ReadIndirectObjects()
        {
            // 7.3.10 Indirect Objects
            string fragment = "12 0 obj true endobj";

            byte[]     bytes      = System.Text.UTF8Encoding.UTF8.GetBytes(fragment);
            Tokenizer  feed       = new Tokenizer(new MemoryStream(bytes));
            Objectizer objectizer = new Objectizer(feed);

            IndirectObject actual = (IndirectObject)objectizer.NextObject();

            Assert.Equal(12, actual.Number);
            Assert.Equal(0, actual.Generation);

            var childs = actual.Childs <BooleanObject>();

            Assert.Single(childs);
            Assert.True(childs[0].Value);
        }
Exemple #11
0
        public ArrayObject(Tokenizer tokenizer)
        {
            if (!TokenValidator.IsDelimiter(tokenizer.TokenExcludedCommentsAndWhitespaces(), "["))
            {
                throw new PdfException(PdfExceptionCodes.INVALID_ARRAY, "Expected [");
            }

            var read = new Objectizer(tokenizer);

            while (!tokenizer.IsNextTokenExcludedCommentsAndWhitespaces("]"))
            {
                childs.Add(read.NextObject());
            }

            if (!TokenValidator.IsDelimiter(tokenizer.TokenExcludedCommentsAndWhitespaces(), "]"))
            {
                throw new PdfException(PdfExceptionCodes.INVALID_ARRAY, "Expected ]");
            }
        }
Exemple #12
0
        public PageOperator(byte[] content)
        {
            var stream = new MemoryStream(content);

            this.reader = new Objectizer(new Tokenizer(stream));
        }