2011-12-18 5 views
2

나는 IList을 C#으로 가지고 있는데, 나는 IText를 통해 PDF로 작성하고 싶다. 이 일을 할 수있는 방법이 있습니까? 나는 잠시 동안 그것을 찾고 있었다.Itext 일주일에 pdf

s = BLLstudent.selectStudentById(Convert.ToInt16(Request.QueryString["s"])); 
var data = BLLevk.selectEvkDetailsVanStudent(s.pk_studentID); 

Document mySavedPDF = new Document(); 

FileStream fs = new FileStream(@"C:\Users\Toon\Documents\Visual Studio 2010\WebSites\LilyNoone-LessLes-503729a\prints\" + s.studentNaam + "_" + s.studentVoornaam + ".pdf", FileMode.Create); 
PdfWriter.GetInstance(mySavedPDF, fs); 
mySavedPDF.Open(); 
mySavedPDF.Add(data); 
mySavedPDF.CloseDocument(); 

하지만이

오류 2 인수 1은 말했다 : 내가 할 노력은 무엇

했다 System.IO '에서'System.Collections.Generic.IList '에서 변환 할 수 없습니다. TextReader 'C : \ Users \ Toon \ Documents \ Visual 사이트 2010 \ WebSites \ evk-applicatie-181211 \ web \ admin \ a_overzicht_student.aspx.cs 95 77 C : ... \ evk-applicatie-181211 \

목록을 직접 삽입 하시겠습니까? 사전

답변

2

없음에

들으 직접 직접 Document 개체에 대한 일반적인 IList를 추가 할 수있는 방법이 없습니다. Document.Add method을 살펴보면 유효한 매개 변수는 Element object뿐이므로 Exception이 발생합니다. 생각해 보면 일반적인 IList를 PDF에 추가하는 것은 매우 어려울 것입니다. 최소한 IList 요소 type과 두 멤버 유형을 결정한 후에 각 멤버 속성의 형식을 지정하는 방법을 고려해야합니다. 및 회원 : Reflection)을 PDF에 포함 시키십시오.

그래서 몇 가지 선택 사항이 있습니다.

  • IList를 간단한 XML 표현으로 변환 한 다음 XMLWorker 또는 HTMLWorker으로 보내십시오.
  • IList를 표시 할 래퍼 또는 코드를 작성하십시오.

두 번째 선택은 그렇게 나쁘지 않으며 컬렉션을 표시하는 방법을 완전히 제어 할 수 있습니다.

public class Student { 
    public string NameLast, NameFirst, Major; 
    public int Id; 
    public string[] Classes; 
    public static IList<Student> GetStudents() { 
    string[] majors = {"Math", "Engineering", "CS"}; 
    List<Student> l = new List<Student>(); 
    for (int i = 0; i < majors.Length;) { 
     l.Add(new Student() { 
     Major = majors[i], 
     Id = ++i, NameLast = string.Format("LastNameStudent{0}", i), 
     NameFirst = string.Format("FirstnameStudent{0}", i), 
     Classes = new string[] {"Calc I", "Physics II", "Databases"} 
     }); 
    } 
    return l; 
    } 
} 
이 같은 간단한 클래스와

Response.ContentType = "application/pdf"; 
IList<Student> students = Student.GetStudents(); 
using (Document document = new Document()) { 
    PdfWriter writer = PdfWriter.GetInstance(
    document, Response.OutputStream 
); 
    document.Open(); 
    foreach (Student s in students) { 
    document.Add(new Paragraph(string.Format(
     "[{0:D8}] - {1}, {2}. MAJOR: {3}", 
     s.Id, s.NameLast, s.NameFirst, s.Major 
    ))); 
    List list = new List(List.ORDERED); 
    foreach (string c in s.Classes) { 
     list.Add(new ListItem(c)); 
    } 
    document.Add(list); 
    } 
} 

: 다음은 간단한 예제