如何使用iTextSharp添加PDF格式的列表列表?

时间:2015-11-07 11:30:00

标签: c# pdf itextsharp

我创建了2D字符串列表:

List<List<string>> questions = new List<List<string>>();

如何使用iTextSharp将此2D列表的元素添加到我的PDF文件?

if (pdfFile.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
     Document document = new Document(iTextSharp.text.PageSize.LETTER, 20, 20, 42, 35);
     PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(pdfFile.FileName, FileMode.Create));
     document.Open();

     Paragraph paragraph = new Paragraph("Test");

     document.Add(paragraph);

     document.Close();

}

我已经尝试过简单的循环和命令:document.Add(questions[i]); 但它没有用。

1 个答案:

答案 0 :(得分:0)

首先让我们来看看问题C# What does List<List<string>> mean?

的答案

接受的答案显示了如何输出此2D列表的内容:

List<List<string>> lists;
...
foreach (List<string> list in lists)
{
    foreach (string s in list)
    {
        Console.WriteLine(s);
    }
}

现在看看问题How to create a table based on a two-dimensional array?

的答案

它解释了如何使用List<List<string>>的数据来构建PdfPTable

PdfPTable table = new PdfPTable(numColumns);
foreach (List<string> question in questions) {
    foreach (string field in question) {
        table.AddCell(field);
    }
}

现在您需要做的就是将table添加到Document实例:

document.add(table);

重要提示:我不知道numColumns的价值。您应该将numColumns替换为string对象的question值。在创建questions对象时,您(并且只有您)知道该问题的答案。实际上,您可以询问questions列表的第一个元素的大小;这样你就不用猜了。请注意,假设每个question具有相同数量的元素。

更新:如果您不想要表格,则应将string值包装在段落中。例如:

foreach (List<string> question in questions) {
    foreach (string field in question) {
        document.Add(new Paragraph(field));
    }
}