added support for text alignment
This commit is contained in:
@ -52,7 +52,7 @@ public class TableContent extends Content {
|
||||
return newLine;
|
||||
}
|
||||
|
||||
protected TableRow getRow (int no) {
|
||||
protected TableRow getRow(int no) {
|
||||
return data.get(no);
|
||||
}
|
||||
|
||||
@ -78,8 +78,8 @@ public class TableContent extends Content {
|
||||
cos.newLineAtOffset(x, y);
|
||||
for (int i = 0; i < header.size(); i++) {
|
||||
cos.showText(header.getHeader(i).getText());
|
||||
cos.newLineAtOffset(header.getColumnSize(i), 0);
|
||||
}
|
||||
cos.newLineAtOffset(header.getColumnSize(i), 0);
|
||||
}
|
||||
if (data.isEmpty()) {
|
||||
currentY -= headerFont.getFontSize() - headerFont.getPadding();
|
||||
}
|
||||
@ -95,6 +95,7 @@ public class TableContent extends Content {
|
||||
}
|
||||
}
|
||||
currentY += yOffset;
|
||||
|
||||
cos.endText();
|
||||
|
||||
return new Coordinate(currentX, currentY);
|
||||
|
||||
@ -12,7 +12,6 @@ public class TableHeader {
|
||||
|
||||
@Expose
|
||||
private final List<Text> headers;
|
||||
|
||||
@Expose
|
||||
private final List<Integer> colSizes;
|
||||
|
||||
@ -33,6 +32,14 @@ public class TableHeader {
|
||||
return this;
|
||||
}
|
||||
|
||||
public TableHeader add (String headerText, int colSize, TextAlignment align) {
|
||||
headers.add (new Text (headerText, align));
|
||||
colSizes.add (colSize);
|
||||
return this;
|
||||
}
|
||||
|
||||
/* *** getter *** */
|
||||
|
||||
public int size() {
|
||||
return headers.size();
|
||||
}
|
||||
@ -45,4 +52,6 @@ public class TableHeader {
|
||||
return headers.get(pos);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -12,22 +12,38 @@ public class Text extends PDFElement {
|
||||
private final String text;
|
||||
@Expose
|
||||
private final String fontAlias;
|
||||
@Expose
|
||||
private TextAlignment align;
|
||||
|
||||
public Text() {
|
||||
this.text = "";
|
||||
this.fontAlias = null;
|
||||
this.align = null;
|
||||
}
|
||||
|
||||
public Text(String text) {
|
||||
this.text = text;
|
||||
this.fontAlias = null;
|
||||
this.align = null;
|
||||
}
|
||||
|
||||
public Text(String text, TextAlignment align) {
|
||||
this.text = text;
|
||||
this.fontAlias = null;
|
||||
this.align = align;
|
||||
}
|
||||
|
||||
public Text(String text, String fontAlias) {
|
||||
this.text = text;
|
||||
this.fontAlias = fontAlias;
|
||||
this.align = null;
|
||||
}
|
||||
|
||||
public Text(String text, String fontAlias, TextAlignment align) {
|
||||
this.text = text;
|
||||
this.fontAlias = fontAlias;
|
||||
this.align = align;
|
||||
}
|
||||
|
||||
/* *** getter / setter *** */
|
||||
public String getText() {
|
||||
@ -37,4 +53,13 @@ public class Text extends PDFElement {
|
||||
public String getFontAlias() {
|
||||
return fontAlias;
|
||||
}
|
||||
|
||||
public TextAlignment getAlign() {
|
||||
if (align == null) {
|
||||
return TextAlignment.LEFT;
|
||||
} else {
|
||||
return align;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,11 @@
|
||||
package de.muehlencord.shared.pdf;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author joern.muehlencord
|
||||
*/
|
||||
public enum TextAlignment {
|
||||
|
||||
LEFT,
|
||||
RIGHT;
|
||||
}
|
||||
@ -43,22 +43,35 @@ public class TextContent extends Content {
|
||||
return this;
|
||||
}
|
||||
|
||||
public TextContent addLine(String text, TextAlignment align) {
|
||||
this.textLines.add(new Text(text, align));
|
||||
return this;
|
||||
}
|
||||
|
||||
public TextContent addLine(String text, String fontAlias) {
|
||||
this.textLines.add (new Text(text, fontAlias));
|
||||
this.textLines.add(new Text(text, fontAlias));
|
||||
return this;
|
||||
}
|
||||
|
||||
/* *** getter / setter */
|
||||
@Override
|
||||
protected Coordinate addContentToPdf(PDRectangle rect, PDPageContentStream cos) throws IOException, ConfigurationException {
|
||||
float margin = 40F;
|
||||
cos.beginText();
|
||||
cos.newLineAtOffset(x, y);
|
||||
int currentY = y;
|
||||
for (Text textLine : textLines) {
|
||||
Font font = (textLine.getFontAlias()== null ? document.getStandardFont() : document.getFontByAlias(textLine.getFontAlias()));
|
||||
Font font = (textLine.getFontAlias() == null ? document.getStandardFont() : document.getFontByAlias(textLine.getFontAlias()));
|
||||
PDFont pdFont = document.getFont(font.getFontName());
|
||||
cos.setFont(pdFont, font.getFontSize());
|
||||
int leading = font.getFontSize() + font.getPadding();
|
||||
|
||||
if (textLine.getAlign() == TextAlignment.RIGHT) {
|
||||
float textWdith = (pdFont.getStringWidth(textLine.getText()) / 1000F) * font.getFontSize();
|
||||
float width = rect.getUpperRightX() - rect.getLowerLeftX() - 2 * margin;
|
||||
float startX = width - textWdith;
|
||||
cos.newLineAtOffset(startX, 0);
|
||||
}
|
||||
currentY -= leading;
|
||||
cos.setLeading(leading);
|
||||
cos.showText(textLine.getText());
|
||||
@ -66,6 +79,6 @@ public class TextContent extends Content {
|
||||
}
|
||||
cos.endText();
|
||||
|
||||
return new Coordinate (x, currentY);
|
||||
return new Coordinate(x, currentY);
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,7 +54,7 @@ public class PDFDocumentTest {
|
||||
TextContent invoiceInfoInformation = new TextContent(doc, 40, 442, "Sehr geehrter Anzeigenkunde, ")
|
||||
.addLine()
|
||||
.addLine()
|
||||
.addLine("Wir danken für den Auftrag und bitten um Erledigung der folgenden Anzeigenabrechnung")
|
||||
.addLine("Wir danken für den Auftrag und bitten um Erledigung der folgenden Anzeigenabrechnung", TextAlignment.RIGHT)
|
||||
.addLine();
|
||||
doc.addContent(invoiceInfoInformation);
|
||||
|
||||
@ -63,7 +63,7 @@ public class PDFDocumentTest {
|
||||
.add ("Menge", 100)
|
||||
.add ("Beschreibung", 300)
|
||||
.add ("Einzelpreis", 100)
|
||||
.add ("Summe", 100);
|
||||
.add ("Summe", 100, TextAlignment.RIGHT);
|
||||
invoiceLines.addLine("1","Anzeige Hövelhofer Rundschau", "10", "10");
|
||||
invoiceLines.addLine ("${invoiceline.amount}", "${invoiceline.description}", "${invoiceline.price}", "${invoiceline.total}").createList("invoiceLines", "invoiceline");
|
||||
invoiceLines.addLine("2","Anzeige Hövelhofer Rundschau", "10", "20");
|
||||
|
||||
Reference in New Issue
Block a user