2013-08-22 3 views
0

동적으로 생성되는 pdf의 크기를 사용자가 선택해야한다는 요구 사항이 있습니다. iTextSharp에서 리플렉션을 사용하여 값을 되 찾는 방법

 System.Reflection.FieldInfo[] fi = typeof(iTextSharp.text.PageSize).GetFields(); 
     DropDownList1.DataSource = fi; 
     DropDownList1.DataBind(); 

모든 것은 여기까지 괜찮 나는이 드롭 다운리스트에있는 모든 크기를 열거하고 iTextSharp에서 지원하는 모든 크기를 채우려면. 선택 사용자가 문자 크기를 말할 때 지금, 내가 어떻게

var document = new Document(PageSize.LETTER); 

은 현재 내가 같이 그걸 얻기 위해 노력하고 있지만이 유형의 오류를 컴파일주고처럼 초기화 문서를 초기화하는이 정보를 사용할 수 있습니다.

PageSize getpsize() 
{ 
     System.Reflection.FieldInfo[] fi = typeof(iTextSharp.text.PageSize).GetFields(); 
     int si = DropDownList1.SelectedIndex; 
     PageSize p = fi[si]; 
     return p; 
} 

반성과 관련하여 처음으로 심각한 경험 이었기 때문에 도와주세요.

+0

실제로 리플렉션을 전혀 사용할 필요가 없습니다. PageSize 상수는 단지 예제 사이트 일 뿐이며 제한 사항이 아닙니다. 원하는 크기를 제공하십시오. – mkl

+0

"예제 사이트"는 "예제 크기"여야합니다. 때때로 내 스마트 폰은 나를 이해할 정도로 똑똑하지 않습니다 ...;) – mkl

답변

0
System.Reflection.FieldInfo[] fi = typeof(iTextSharp.text.PageSize).GetFields(); 

FieldInfo[]은 개체 자체가 아니라 필드 메타 데이터의 배열입니다. 당신이 필요한 메타 데이터를 얻을 후

그래서,이 같은 실제 필드 값을 얻을 필요가 :

FieldInfo field = fi[si]; 
PageSize size = (PageSize)field.GetValue(null); 

GetValue (객체) 분야의 실제 값을 반환합니다. 이 필드는 정적이므로 쿼리 할 특정 개체가 없으므로 null을 전달합니다.

관련 문제