public static PdfArray Parse(Parsing.Lexer lexer) { var list = new List <IPdfObject>(); PdfObject value; while ((value = PdfObject.ParseAny(lexer, "]")) != null) { list.Add(value); } return(new PdfArray(list)); }
public static PdfHexadecimalString Parse(Parsing.Lexer lexer) { var hexString = new StringBuilder(); string text = string.Empty; while (text != ">") { hexString.Append(text); text = lexer.ReadToken(); } if ((hexString.Length % 2) != 0) { hexString.Append('0'); } return(new PdfHexadecimalString(hexString.ToString())); }
public static PdfStartXRef Parse(Parsing.Lexer lexer) { var n = PdfNumeric.Parse(lexer); return(new PdfStartXRef(n)); }
public static PdfLiteralString Parse(Parsing.Lexer lexer) { int parenthesisCount = 0; var sb = new StringBuilder(); char c = lexer.ReadChar(); while (parenthesisCount != 0 || c != ')') { if (c == '(') { parenthesisCount++; } else if (c == ')') { parenthesisCount--; } if (c == '\\') { c = lexer.ReadChar(); switch (c) { case 'n': sb.Append("\n"); break; case 'r': sb.Append("\r"); break; case 't': sb.Append("\t"); break; case 'f': sb.Append("\f"); break; // \b Backspace (BS) case 'b': throw new NotImplementedException("Backspace char parsing"); case '\\': case ')': case '(': sb.Append(c); break; case '\r': break; default: // \ddd Character code ddd (octal) var octalNumber = new StringBuilder(); octalNumber.Append(c); char c2 = lexer.ReadChar(); if (!char.IsDigit(c2)) { lexer.Putc(); } else { octalNumber.Append(c2); char c3 = lexer.ReadChar(); if (!char.IsDigit(c3)) { lexer.Putc(); } else { octalNumber.Append(c2); } } int octal = Convert.ToInt32(octalNumber.ToString(), 8); sb.Append((char)octal); break; } } else { sb.Append(c); } c = lexer.ReadChar(); } return(new PdfLiteralString(sb.ToString())); }
public static PdfComment Parse(Parsing.Lexer lexer) { return(new PdfComment(lexer.ReadUntilEol())); }
public static PdfNumeric Parse(Parsing.Lexer lexer) { return(new PdfNumeric(lexer.ReadToken())); }
public static PdfName Parse(Parsing.Lexer lexer) { string name = lexer.ReadToken(); return(new PdfName(name)); }
public static PdfData Parse(Parsing.Lexer lexer, int length) { byte[] data = lexer.ReadBytes(length); return(new PdfData(data)); }
public static PdfNull Parse(Parsing.Lexer lexer) { lexer.Expects("null"); return(Null); }