使用DottedLineSeparator类我可以在itext中绘制虚线分隔符。同样可以绘制连续的连字符,如“---------------------'作为PdfPCell中的分隔符?
我查看了示例here。还有其他解决方案吗?
答案 0 :(得分:2)
LineSeparator
类可用于绘制实线水平线。作为HTML中<hr>
标记的等效项,或作为同一行上两个文本部分之间的分隔符。 DottedLineSeparator
扩展LineSeparator
类并绘制虚线而不是实线。您可以通过更改线宽来定义点的大小,并获得一种方法来定义点之间的间隙。
您需要一个虚线,并且很容易创建自己的LineSeparator
实现。最简单的方法是扩展DottedLineSeparator
类,如下所示:
class CustomDashedLineSeparator extends DottedLineSeparator {
protected float dash = 5;
protected float phase = 2.5f;
public float getDash() {
return dash;
}
public float getPhase() {
return phase;
}
public void setDash(float dash) {
this.dash = dash;
}
public void setPhase(float phase) {
this.phase = phase;
}
public void draw(PdfContentByte canvas, float llx, float lly, float urx, float ury, float y) {
canvas.saveState();
canvas.setLineWidth(lineWidth);
canvas.setLineDash(dash, gap, phase);
drawLine(canvas, llx, urx, y);
canvas.restoreState();
}
}
如您所见,我们引入了两个额外的参数,dash
值和phase
值。 dash
值定义hyphen
的长度。 phase
值告诉iText从哪里开始(例如以半个连字符开头)。
请查看CustomDashedLine示例。在此示例中,我使用LineSeparator
的此自定义实现,如下所示:
CustomDashedLineSeparator separator = new CustomDashedLineSeparator();
separator.setDash(10);
separator.setGap(7);
separator.setLineWidth(3);
Chunk linebreak = new Chunk(separator);
document.add(linebreak);
结果是一条虚线,连字符长10pt,厚3pt,间隙为7pt。第一个短划线只有7.5pt长,因为我们没有更改phase
值。在我们的自定义实现中,我们定义了一个2.5pt的阶段,这意味着我们在2.5pt时开始10pt的连字符,产生一个长度为7.5pt的连字符。
您可以像使用LineSeparator
一样使用此自定义DottedLineSeparator
,例如作为Chunk
中的PdfPCell
。
答案 1 :(得分:0)
tableView(_:titleForHeaderInSection:)
这也是一种解决方案:))