【问题标题】:How to add inline spacing in pdfPCell如何在 pdfPCell 中添加内联间距
【发布时间】:2015-09-27 16:59:17
【问题描述】:

我需要在 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 );

【问题讨论】:

  • PDF上下文中两行之间的空格叫做leading,关于在单元格中设置前导的问题和答案已经很多了(也可以搜索文本模式复合模式)。但是,当我查看您的代码 sn-p 时,我只看到一行。您是否可能不想在两行之间添加空格,而是在在同一行的两个块之间添加空格?请澄清,否则您可能会得到有关领导的答案,这可能不是您所需要的。
  • 感谢您的重播,但有时会不止一行
  • 正如我在回答的评论中所解释的那样,我做了三个猜测,试图弄清楚“内联空格”的含义:(1)空格分隔同一行上的两部分文本,一个在左边,另一个在右边,(2) 行之间的空格(分隔连续行的 前导),(3) 行内的不间断空格 ( )。根据 OP,这些猜测都不是正确的。这个问题要么需要澄清,要么需要以“不清楚所问的内容”来结束。
  • 如果我的回答解决了你的问题,你从来没有给我任何反馈。

标签: itextsharp


【解决方案1】:

请看下面的屏幕截图:

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

示例 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" 放在两个不同的单元格中,并将第一个单元格的内容向左对齐,将第二个单元格的内容向右对齐。这会在两个Chunks 之间创建空间。

示例 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 的两个部分。

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

如果您的问题不是关于领先,那么也许您只是在寻找被称为不间断空间的概念:

【讨论】:

  • 感谢您的回答,通过此代码,我们可以在两个表或两列之间添加空间。但我需要在单元格中添加内联空间
  • @S.P 请定义“内联空间”。我的猜测是:(1)空格分隔文本的两部分,一个在左边,另一个在右边,(2)行之间的空格(leading),(3)不间断的空格行内。显然,我猜错了 3 次,所以如果你想让我帮助你,你必须澄清。我不认为我是唯一一个认为这个问题不清楚的人。
  • 行内空格是指,单元格或段落中两行之间的空格
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
  • 2013-09-15
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多