如何使用iTextSharp增加段落内的间距?

时间:2015-04-16 22:55:07

标签: pdf-generation itextsharp paragraph

this开始,我认为我可以通过以下方法之一来增加段间距:

par.SetLeading(15, 2.5f); // doesn't do anything
par.SetLeading(0, 2);     // doesn't do anything

在上下文中:

Chunk boldpart = new Chunk("Important: ", helvetica9BoldRed);
Chunk ini = new Chunk("Form must be filled out in ", helvetica9Red);

Anchor anchor = new Anchor("Adobe Reader", LinkFont);
anchor.Reference = "http://www.adobe.com";

Chunk middlePart = new Chunk(" or Acrobat Professional 8.1 or above. To save completed forms, Acrobat Professional is required. For technical and accessibility assistance, contact the ", helvetica9Red);

Anchor anchorCCO = new Anchor("Campus Controller's Office", LinkFont);
anchor.Reference = "mailto:dplatypus@ucsc.edu";

PdfPTable tbl = new PdfPTable(1);
tbl.WidthPercentage = 55;
tbl.HorizontalAlignment = Element.ALIGN_LEFT;
var par = new Paragraph();
//par.SetLeading(15, 2.5f); // doesn't do anything
par.SetLeading(0, 2);       // doesn't do anything

par.Add(boldpart);
par.Add(ini);
par.Add(anchor);
par.Add(middlePart);
par.Add(anchorCCO);
PdfPCell chunky = new PdfPCell(par);
chunky.BorderWidth = PdfPCell.NO_BORDER;
tbl.AddCell(chunky);                          
doc.Add(tbl);

如评论所示,两者都没有。这就是我所看到的:

enter image description here

如何增加段落内线之间的距离?

更新

当我尝试这个时(回答答案):

PdfPCell chunky = new PdfPCell();
chunky.AddCell(par);

我知道,“'iTextSharp.text.pdf.PdfPCell'不包含'AddCell'的定义,也没有扩展方法'AddCell'接受'iTextSharp.text.pdf.PdfPCell'类型的第一个参数可以找到

2 个答案:

答案 0 :(得分:2)

您的问题与StackOverflow上已回答的许多问题重复。其中一些是:

还有更多,但上面提到的那些是为免费电子书The Best iText Questions on StackOverflow选择的那本书,这本书回答了你在过去一周里提出的许多问题。

执行此操作时:

PdfPCell chunky = new PdfPCell(par);

您不会将par视为ParagraphPdfPCell查看par,好像它是PhrasePhraseParagraph的超类)。正如许多人所记录的那样,您正在文本模式中创建PdfPCell文字模式表示会忽略在段落级别定义的所有属性,以支持单元格级别的属性。

换句话说:如果为leading定义par,则会被忽略。相反,将使用leading chunky。这是一种基于经验的设计选择:当您主要对添加文本感兴趣时,在单元格级别定义属性更有意义。

在某些情况下,您不希望在单元格级别定义属性。例如:也许您有一个内容由不同Paragraph对象组成的单元格,这些对象具有不同的引导,对齐等...

在这种情况下,您将从文本模式切换到复合模式。你可以这样做:

PdfPCell chunky = new PdfPCell();
chunky.AddCell(par);

将忽略在单元格级别定义的前导和对齐等属性。相反,leading的{​​{1}}和alignment将被考虑在内(par将被视为真实的par,而不是Paragraph }})。

所有这些都在iText in ActionThe Best iText Questions on StackOverflow以及许多其他地方进行了解释。

答案 1 :(得分:0)

这有效:

var par = new Paragraph();
par.SetLeading(0, 1.2f);
par.Add(boldpart);
par.Add(ini);
par.Add(anchor);
par.Add(middlePart);
par.Add(anchorCCO);
PdfPCell chunky = new PdfPCell();
chunky.AddElement(par);
chunky.BorderWidth = PdfPCell.NO_BORDER;
tbl.AddCell(chunky);                          

增加或减少" 1.2f"尝尝。