Невозможно добавить список в объект document с помощью iTextSharp

 public ActionResult PartTimeFacultyCourseLoadReport()
    {
        var teacherStatistics = (from t in db.Teachers
                                 join c in db.Courses
                                     on t.Id equals c.TeacherId into cGroup
                                 where t.Status == "Part Time"
                                 orderby t.Designation descending
                                 select new
                                 {
                                     TeacherInfo = t,
                                     CourseInfo = from cg in cGroup
                                                  orderby cg.Code ascending
                                                  select cg
                                 }).ToList();

        List<TeacherStatistics> teacherStatisticses = new List<TeacherStatistics>();

        int count = 0;
        foreach (var teacherStatistic in teacherStatistics)
        {
            TeacherStatistics aTeacherStatistics = new TeacherStatistics();
            aTeacherStatistics.Name = teacherStatistic.TeacherInfo.Name;
            aTeacherStatistics.Designation = teacherStatistic.TeacherInfo.Designation;
            aTeacherStatistics.NumberOfCourse = teacherStatistic.TeacherInfo.NumberOfCourse;
            count = 0;
            foreach (var courseInfo in teacherStatistic.CourseInfo)
            {
                if (count != 0)
                {
                    aTeacherStatistics.Courses += ", ";
                }

                aTeacherStatistics.Courses += courseInfo.Code;
                aTeacherStatistics.Courses += "(";
                aTeacherStatistics.Courses += courseInfo.Section;
                aTeacherStatistics.Courses += ")";
                count++;
            }
            teacherStatisticses.Add(aTeacherStatistics);
        }
        var document = new Document(PageSize.A4, 50, 50, 25, 25);
        var output = new MemoryStream();
        var writer = PdfWriter.GetInstance(document, output);
        document.Open();
        var data = teacherStatisticses.ToList();
        document.Add(data);
        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition", "attachment;  filename=PartTimeFaculty.pdf");
        Response.BinaryWrite(output.ToArray());
        document.Close();
        return View(teacherStatisticses);
    }

Я хочу передать список «teacherStatisticses» через объект document для создания PDF. Мой код не работает. Он показал мне следующую ошибку —
Аргумент 1: не удается преобразовать из ‘ System.Коллекции.Родовой.Список ‘ to ‘ iTextSharp.текст.IElement»

1 ответ

  1. Я предполагаю, что вы используете некоторую версию itextpdf для создания PDF.

    Ошибка в строке:

     document.Add(data);
    

    Нет способа добавить простые объекты .NET в PDF-документ. Я не могу предсказать структуру PDF, которую вы хотели бы достичь, но код, упомянутый выше, может быть написан как:

        foreach(var teacher in teacherStatistics)
        {
           var paragraph = new Paragraph(teacher.ToString()); // instead of teacher.ToString() should be some code which translates teacherStatistics projection to the string representation 
           document.Add(paragraph);
        }
        //not tested
    

    Много полезных образцов можно найти на
    http://developers.itextpdf.com/examples

    Базовый учебник для itextpdf:
    http://developers.itextpdf.com/content/itext-7-jump-start-tutorial/chapter-1-introducing-basic-building-blocks