Стоит цель - генерировать ведомости по дисциплинам.
Фактически есть 2 задачи:
1. Заполнять данными заранее известный шаблон.
2. Необходима массовая обработка ведомостей, поэтому нужно в одном файле возвращать сразу несколько заполненных шаблонов.
В качестве формата файла, возвращаемого пользователю, необходимо использовать PDF.