如何在pdfPCell中添加内联间距

时间:2015-07-09 10:59:49

标签: itextsharp

我需要在iTextSharp pdfPCell

中的两行之间添加空格
Chunk chunk = new Chunk("Received  Rs(In Words) :    " + " " + myDataTable.Tables[1].Rows[0]["Recieved"].ToString(), font8);
PdfPTable PdfPTable = new PdfPTable(1);                    
PdfPCell PdfPCell =new PdfPCell(new Phrase(Chunk ));
PdfPCell .Border = PdfCell.NO_BORDER;
PdfPTable .AddCell(PdfPCell );

1 个答案:

答案 0 :(得分:2)

请看下面的截图:

enter image description here

根据您的代码段,我假设您要将"Received Rs (in Words):""Priceless"分开,但如果有多行,我不清楚您想要发生什么,所以我写了三个例子:

示例1:

table = new PdfPTable(2);
table.setHorizontalAlignment(Element.ALIGN_LEFT);
table.setWidthPercentage(60);
table.setSpacingAfter(20);
cell = new PdfPCell(new Phrase("Received Rs (in Words):"));
cell.setBorder(PdfPCell.LEFT | PdfPCell.TOP | PdfPCell.BOTTOM);
table.addCell(cell);
cell = new PdfPCell(new Phrase("Priceless"));
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
cell.setBorder(PdfPCell.RIGHT | PdfPCell.TOP | PdfPCell.BOTTOM);
table.addCell(cell);
document.add(table);

在这个例子中,我将"Received Rs (in Words):""Priceless"放在两个不同的单元格中,我将第一个单元格的内容对齐到左侧,将第二个单元格的内容对齐到右侧。这会在两个Chunk之间创建空间。

示例2

// same code as above, except for:
table.setWidthPercentage(50);

我减小了表格的宽度,以显示如果某些内容不适合单元格会发生什么。由于我们没有为列定义任何宽度,因此两列的宽度相等,但由于"Received Rs (in Words):"需要的空间比"Priceless"更多,因此文字宽度不适合宽度细胞和它被包裹。我们可以避免这种情况,通过为第一列定义一个较大的with与第二列相比。

示例3:

table = new PdfPTable(1);
table.setHorizontalAlignment(Element.ALIGN_LEFT);
table.setWidthPercentage(50);
Phrase p = new Phrase();
p.add(new Chunk("Received Rs (In Words):"));
p.add(new Chunk(new VerticalPositionMark()));
p.add(new Chunk("Priceless"));
table.addCell(p);
document.add(table);

这个例子非常接近你所拥有的,但是我没有引入空格字符来创建空间,而是引入了一个特殊的块:new VerticalPositionMark())。这个块将通过引入尽可能多的空间来分隔Phrase的两个部分。

如果这没有回答您的问题,您可能正在寻找称为 leading 的概念。前导是两行文本的基线之间的空间。如果是这种情况,请阅读以下Q& As:

如果您的问题不是关于领导,那么您可能只是在寻找被称为非破坏性空间的概念: