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); }
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); }
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(); }
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); }
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); }
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); }
[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); }
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); }
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"); }
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); }
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 ]"); } }
public PageOperator(byte[] content) { var stream = new MemoryStream(content); this.reader = new Objectizer(new Tokenizer(stream)); }