iTextSharp multiple lines in PdfPCell one under another

故事扮演 提交于 2019-12-09 17:17:40

问题


I am using iTextSharp to create table in PDF document. I need several lines inside table cell to appear one under another like this:

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

Some times with extra line like this :

First line text

   Second Line Text
   Third Line Text
Fourth line text

I have tried several approaches, with Paragraphs, Chunks, Phrases, did research online but still can not get this result. Please help. Also, how to make columns to adjust width dynamically to content ? (not wrapping) Thank you


回答1:


If you need to align at the text level you'll need to switch to a fixed-width font. But if you're just looking to indent you can just add spaces to new lines within a paragraph:

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

You could also get complicated and use a sub-table if you need more control:

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



回答2:


Though pretty tedious, but for setting font, following seem to work:

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



回答3:


You can also do it the following way ..

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

I text will notice the new line return code and render your phrase on two separate lines.

Your first line

Your 2nd line

Cheers



来源:https://stackoverflow.com/questions/21939280/itextsharp-multiple-lines-in-pdfpcell-one-under-another

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!