2015-11-07 2 views
1

Я создал 2D список строк:Как добавить список списков строк в PDF с помощью iTextSharp?

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

Как я могу добавить элементы этого списка 2D в мой файл PDF с помощью iTextSharp?

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]); , но он не работает.

+0

Помимо того, что вам нужно iTextSharp пример и мой ответ пример IText, ваш вопрос является точной копией ([Как создать таблицу на основе двумерного массива?] http://stackoverflow.com/questions/24404686/i-need-to-create-a-table-and-assign-the-values-into-the-table-in-pdf-using-javaf). Вы должны действительно прочитать [документацию] (http://pages.itextpdf.com/ebook-stackoverflow-questions.html), прежде чем задавать вопросы так же просто, как это. Это даже не вопрос iTextSharp. Речь идет о циклическом перемещении по двумерному массиву и использованию этих значений в качестве данных. –

ответ

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 имеет такое же количество элементов.

UPDATE: Если вы не хотите таблицу, вы должны обернуть значения string в параграфах. Например:

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

Ты пропустил меня. Я не хочу добавлять таблицу в свой PDF-файл. Я просто хочу добавить группы вопросов по числовому порядку (один за другим). Я хочу, чтобы это выглядело как тест в школе. – PeMaCN

+0

В этом случае вам необходимо обернуть вопросы и ответить на объекты (например, «Параграф»). Вы действительно должны приложить больше усилий, но я уточню свой ответ. –

+0

Извините. Я новичок в C#. Спасибо за ваши усилия! – PeMaCN

Смежные вопросы