iTextSharp table.SpacingBefore当表是第一个项目时不工作

Har*_*ell 4 itext spacing

我正在尝试使用table.SpacingBefore在我的PDF文件中的表格之前放置一些空格,但它不起作用.

我找到了iTextSharp table.SpacingBefore不工作 ,这是完全相同的问题,但解决方案似乎没有工作.

这是我的一些代码:

header.SpacingBefore = 150f;
Paragraph paragraph = new Paragraph();
paragraph.Leading = 0f;
doc1.Add(paragraph);
doc1.Add(header);
Run Code Online (Sandbox Code Playgroud)

结果是:

RESULT1

添加非空段落

Paragraph paragraph = new Paragraph(" TEXT ");
Run Code Online (Sandbox Code Playgroud)

产生这个:

在此输入图像描述

Bru*_*gie 8

请看下面的截图:

在此输入图像描述

文件spacing1.pdf(显示在其他文件下面)是使用您描述的方式创建的.通过设计,忽略"间距之前",因为"间距"功能允许您在页面上的不同元素之间创建一些空间.如果没有其他元素,则不添加间距.在您的示例中就是这种情况:表是第一个元素,因此不需要添加"之前的间距".出于同样的原因,当表格是页面上的最后一个元素时,将忽略"后跟间距".

文件spacing2.pdf(显示在中间)是通过Paragraph在添加表之前添加对象来创建的.如您所见,在Paragraph和之间添加了额外的间距PdfPTable.你说没有.在我的情况下,屏幕截图使它非常清楚.您使用的是哪个版本的iTextSharp?

我认为你对你的要求的分析是错误的.你不希望前后间隔.你想要间距.这就是我在spacing3.pdf中所做的事情(如右图所示,在其他窗口的顶部).

Paragraph在添加表之前添加了以下内容来介绍此间距:

document.Add(new Paragraph(100, "\u00a0"));
Run Code Online (Sandbox Code Playgroud)

100这个段落是领先的.它定义了添加的空间量.这"\u00a0"是一个带有单个"不间断空格"字符的字符串.

我认为这就是你所要求的.这与"之前的间距"不同.