0

我有一个要求,用户选择动态生成的 pdf 的大小。

为了填充 iTextSharp 支持的所有尺寸,我将下拉列表中的所有尺寸列举为

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

到这里为止,一切都很好。现在,当用户选择说字母大小时,我如何使用此信息来初始化已初始化的文档,例如

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;
 }

请帮忙,因为这是我第一次认真的反思体验。

4

1 回答 1

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

FieldInfo[] is array of fields metadata, not the objects themselves.

So after you get the necessary metadata, you need to get actual field value like this:

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

GetValue(object) returns actual value of the field. As these fields are static, you pass null, as there is no specific object to query.

于 2013-08-22T16:47:57.947 回答