c# - itext Ilist 转 pdf

标签 c# itext ilist

我在 c# 中有一个 IList,我想通过 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();

但是这说

Error 2 Argument 1: cannot convert from 'System.Collections.Generic.IList' to 'System.IO.TextReader' C:\Users\Toon\Documents\Visual Studio 2010\WebSites\evk-applicatie-181211\web\admin\a_overzicht_student.aspx.cs 95 77 C:...\evk-applicatie-181211\

有没有办法直接插入列表?

提前致谢

最佳答案

不,没有办法直接将通用IList 直接添加到Document 对象。如果你看一下 Document.Add method , 唯一有效的参数是 Element object - 这就是抛出 Exception 的原因。如果您考虑一下,尝试将通用 IList 添加到 PDF 将非常困难 - 至少您必须考虑 IList 元素 type,以及如何格式化每个成员PDF 中的属性(在使用 Reflection 确定类型和成员之后)。

所以你有几个选择。

  • 将您的 IList 转换为简单的 XML 表示,然后将其发送到 XMLWorkerHTMLWorker .
  • 编写您自己的包装器或代码来显示您的 IList。

第二个选择还不错,您可以完全控制如何显示您的收藏。这是一个简单的例子:

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

像这样一个简单的类:

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

关于c# - itext Ilist 转 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8553378/

相关文章:

c# - MSSQL中子字符串的更新操作

c# - C# 属性可以向方法添加参数吗?

c# - 如何修复组件启动时的控制台错误

c# - 在 pdf 文件中搜索文本,如果文本存在则返回坐标

c# - 将 IList<int> 集合转换为逗号分隔的列表

c# - MigraDoc TextFrame 溢出选项

java - 如何使用 OpenPDF 添加段落和边框

html - 使用 itextsharp 转换为 pdf 时不考虑字体大小和图像大小

c# - 返回一个实体类的列表

.net - 为什么 SortedList(TKey,TValue).Keys 属性是 IList(TKey) 而不是 ReadOnlyCollection(TKey)?