using System.Collections.Generic;
public async static void Main()
var page1Line1Phrase1 = new Phrase { PhraseNumber = 1 };
var page1Line1Phrase2 = new Phrase { PhraseNumber = 2 };
var page2Line1Phrase1 = new Phrase { PhraseNumber = 1 };
var page2Line2Phrase2 = new Phrase { PhraseNumber = 1 };
var page1Line1 = new Line { LineNumber = 1, Phrases = new List<Phrase> { page1Line1Phrase1, page1Line1Phrase2 } };
var page2Line1 = new Line { LineNumber = 1, Phrases = new List<Phrase> { page2Line1Phrase1 } };
var page2Line2 = new Line { LineNumber = 2, Phrases = new List<Phrase> { page2Line2Phrase2 } };
var page1 = new Page { PageNumber = 1, Lines = new List<Line> { page1Line1 } };
var page2 = new Page { PageNumber = 2, Lines = new List<Line> { page2Line1, page2Line1 } };
var pdf = new Pdf { Pages = new List<Page> { page1, page2 }};
foreach(var page in pdf.Pages)
foreach(var line in page.Lines)
foreach(var phrase in line.Phrases)
phrase.Metadata = string.Format("{0},{1},{2}", page.PageNumber, line.LineNumber, phrase.PhraseNumber);
foreach(var page in pdf.Pages)
foreach(var line in page.Lines)
foreach(var phrase in line.Phrases)
Console.WriteLine(phrase.Metadata);
public int PhraseNumber {get;set;}
public string Metadata {get;set;} = "not set yet";
public int LineNumber {get;set;}
public IEnumerable<Phrase> Phrases {get;set;}
public int PageNumber {get;set;}
public IEnumerable<Line> Lines {get;set;}
public IEnumerable<Page> Pages {get;set;}