Чтобы текст отображался слева, вам нужно установить свойство pagepadding в вашем flowdocument следующим образом:
fd.PagePadding = new Thickness(0);
причина, по которой вы, похоже, получаете только первого читателя, заключается в том, что он заполняет доступное пространство (переместите его, чтобы он стал первым объектом, и вы не увидите текстовые блоки).
Если вы измените FlowDocumentReader на FlowDocumentScrollViewer и воспользуетесь свойством VerticalScrollBarVisibility, то вы сможете получить желаемый эффект. Ниже приведен метод GetFlowDocumentReader с примененными изменениями:
FlowDocumentScrollViewer GetFlowDocumentReader(string text)
{
FlowDocumentScrollViewer fdr = new FlowDocumentScrollViewer();
FlowDocument fd = new FlowDocument();
fdr.Document = fd;
fdr.Margin = new Thickness(0);
Paragraph par = new Paragraph();
par.Margin = new Thickness(0);
fd.Blocks.Add(par);
Run r = new Run(text);
par.Inlines.Add(r);
fd.PagePadding = new Thickness(0);
fdr.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden;
return fdr;
}