2014-02-21 4 views
4

Я использую iTextSharp для создания таблицы в PDF-документе. Мне нужно несколько строк внутри ячейки таблицы появляются один под другим, как это:iTextSharp несколько строк в PdfPCell один под другим

First line text 
    Second Line Text 
    Third Line Text 
Fourth line text 

Несколько раз с дополнительной линией, как это:

First line text 

    Second Line Text 
    Third Line Text 
Fourth line text 

я пытался несколько подходов, с абзацами, Куски, фразы, проводил исследования в Интернете, но до сих пор не может получить этот результат. Пожалуйста помоги. Также, как сделать столбцы для динамического изменения ширины содержимого? (не обертывание) Спасибо

+0

Посмотреть этот пост для ответа на ваш второй вопрос: http://stackoverflow.com/questions/7687259/how-to-make -pdfptable-calculate-column-width-dynamically –

+0

Спасибо за это isnfo. –

ответ

8

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

var p = new Paragraph(); 
p.Add("First line text\n"); 
p.Add(" Second line text\n"); 
p.Add(" Third line text\n"); 
p.Add("Fourth line text\n"); 
myTable.AddCell(p); 

Вы также можете получить сложный и использовать вложенную таблицу, если вам нужно больше контроля:

var subTable = new PdfPTable(new float[] { 10, 100 });       
subTable.AddCell(new PdfPCell(new Phrase("First line text")) { Colspan = 2, Border = 0 }); 
subTable.AddCell(new PdfPCell() { Border = 0 }); 
subTable.AddCell(new PdfPCell(new Phrase("Second line text")) { Border = 0 }); 
subTable.AddCell(new PdfPCell() { Border = 0 }); 
subTable.AddCell(new PdfPCell(new Phrase("Third line text")) { Border = 0 }); 
subTable.AddCell(new PdfPCell(new Phrase("Fourth line text")) { Colspan = 2, Border = 0 }); 
myTable.AddCell(subTable); 
+0

Спасибо, работает для строк, но как добавить определенный шрифт/размер шрифта в строки? p.Add, похоже, не имеет параметра шрифта. –

+1

используйте фразу. или google 0 :-) – increddibelly

4

Хотя довольно утомительно, но для установки шрифта, после похоже на работу:

Font myFont = FontFactory.GetFont("Arial", 8, Font.NORMAL); 

string line1 = "First line of text" + "\n";      
string line2= "Second line of text" + "\n"; 
string line3= " Third Line of text"; 

Paragraph p1 = new Paragraph(); 
Phrase ph1 = new Phrase(line1, myFont); 
Phrase ph2 = new Phrase(line2, myFont); 
Phrase ph3 = new Phrase(line3, myFont); 

p1.Add(ph1); 
p1.Add(ph2); 
p1.Add(ph3); 

PdfPCell mycell = new PdfPCell(p1); 
1

Вы также можете сделать это следующим образом ..

var xstring = "Your first line \n Your 2nd line"; 
Phrase p = new Phrase(); 
p.Add(new Chunk(xstring, yourFontFace)); 

Текст в тексте будет означать новый код возврата строки и отобразить вашу фразу на две отдельные строки.

Ваша первая линия

Ваша вторая линия

Приветствия