Using DottedLineSeparator class i am able to draw dotted line separator in itext. Similarly is it possible to draw continuous hyphens like \'---------------------\' as separ
The LineSeparator
class can be used to draw a solid horizontal line. Either as the equivalent of the
tag in HTML, or as a separator between two parts of text on the same line. The DottedLineSeparator
extends the LineSeparator
class and draws a dotted line instead of a solid line. You can define the size of the dots by changing the line width and you get a method to define the gap between the dots.
You require a dashed line and it's very easy to create your own LineSeparator
implementation. The easiest way to do this, is by extending the DottedLineSeparator
class like this:
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();
}
}
As you can see, we introduce two extra parameters, a dash
value and a phase
value. The dash
value defines the length of the hyphen
. The phase
value tells iText where to start (e.g. start with half a hyphen).
Please take a look at the CustomDashedLine example. In this example, I use this custom implementation of the LineSeparator
like this:
CustomDashedLineSeparator separator = new CustomDashedLineSeparator();
separator.setDash(10);
separator.setGap(7);
separator.setLineWidth(3);
Chunk linebreak = new Chunk(separator);
document.add(linebreak);
The result is a dashed line with hyphens of 10pt long and 3pt thick, with gaps of 7pt. The first dash is only 7.5pt long because we didn't change the phase
value. In our custom implementation, we defined a phase of 2.5pt, which means that we start the hyphen of 10pt at 2.5pt, resulting in a hyphen with length 7.5pt.
You can use this custom LineSeparator
in the same way you use the DottedLineSeparator
, e.g. as a Chunk
in a PdfPCell
.