package com.brightgenerous.pdfbox.writer.appender; import java.awt.Color; import java.net.URL; import org.apache.pdfbox.pdmodel.font.PDFont; import org.apache.pdfbox.pdmodel.font.PDType1Font; public class AppenderBuilder { private static final AppenderFlag DEFAULT_FLAG = AppenderFlag.OVER; private static final AppenderAlign DEFAULT_ALIGN = AppenderAlign.CENTER; private static final AppenderVertical DEFAULT_VERTICAL = AppenderVertical.MIDDLE; private static final Float DEFAULT_MARGIN_X = Float.valueOf(10); private static final Float DEFAULT_MARGIN_Y = Float.valueOf(10); private static final Float DEFAULT_PADDING_LEFT = Float.valueOf(0); private static final Float DEFAULT_PADDING_TOP = Float.valueOf(0); private static final String DEFAULT_READER_FORMAT = "{0}"; private static final String DEFAULT_READERS_FORMAT = "{0} / {1}"; private static final PDFont DEFAULT_FONT = PDType1Font.HELVETICA; private static final Float DEFAULT_FONT_SIZE = Float.valueOf(12); private static final Boolean DEFAULT_KERNED = Boolean.TRUE; private static final Color DEFAULT_COLOR = Color.BLACK; private static final Float DEFAULT_ROTATE = Float.valueOf(0); private static final IImageResource DEFAULT_IMAGE_RESOURCE = new EmptyImageResource(); private static final Boolean DEFAULT_INLINE = Boolean.FALSE; private AppenderFlag flag; private AppenderAlign align; private AppenderVertical vertical; private Float marginX; private Float marginY; private Float paddingLeft; private Float paddingTop; private String format; private PDFont font; private Float fontSize; private Boolean kerned; private Color color; private Float rotate; private IImageResource imageResource; private Boolean inline; protected AppenderBuilder() { } public static AppenderBuilder create() { return new AppenderBuilder(); } public AppenderBuilder clear() { flag = null; align = null; vertical = null; marginX = null; marginY = null; paddingLeft = null; paddingTop = null; format = null; font = null; fontSize = null; kerned = null; color = null; rotate = null; imageResource = null; inline = null; return this; } public AppenderFlag flag() { return flag; } public AppenderBuilder flag(AppenderFlag flag) { this.flag = flag; return this; } public AppenderAlign align() { return align; } public AppenderBuilder align(AppenderAlign align) { this.align = align; return this; } public AppenderVertical vertical() { return vertical; } public AppenderBuilder vertical(AppenderVertical vertical) { this.vertical = vertical; return this; } public Float marginX() { return marginX; } public AppenderBuilder marginX(Float marginX) { this.marginX = marginX; return this; } public AppenderBuilder marginX(float marginX) { return marginX(Float.valueOf(marginX)); } public Float marginY() { return marginY; } public AppenderBuilder marginY(Float marginY) { this.marginY = marginY; return this; } public AppenderBuilder marginY(float marginY) { return marginY(Float.valueOf(marginY)); } public Float paddingLeft() { return paddingLeft; } public AppenderBuilder paddingLeft(Float paddingLeft) { this.paddingLeft = paddingLeft; return this; } public AppenderBuilder paddingLeft(float paddingLeft) { return paddingLeft(Float.valueOf(paddingLeft)); } public Float paddingTop() { return paddingTop; } public AppenderBuilder paddingTop(Float paddingTop) { this.paddingTop = paddingTop; return this; } public AppenderBuilder paddingTop(float paddingTop) { return paddingTop(Float.valueOf(paddingTop)); } public String format() { return format; } public AppenderBuilder format(String format) { this.format = format; return this; } public PDFont font() { return font; } public AppenderBuilder font(PDFont font) { this.font = font; return this; } public Float fontSize() { return fontSize; } public AppenderBuilder fontSize(Float fontSize) { this.fontSize = fontSize; return this; } public AppenderBuilder fontSize(float fontSize) { return fontSize(Float.valueOf(fontSize)); } @Deprecated public Boolean kerned() { return kerned; } @Deprecated public AppenderBuilder kerned(Boolean kerned) { this.kerned = kerned; return this; } @Deprecated public AppenderBuilder kerned(boolean kerned) { return kerned(kerned ? Boolean.TRUE : Boolean.FALSE); } public Color color() { return color; } public AppenderBuilder color(Color color) { this.color = color; return this; } public Float rotate() { return rotate; } public AppenderBuilder rotate(Float rotate) { this.rotate = rotate; return this; } public AppenderBuilder rotate(float rotate) { return rotate(Float.valueOf(rotate)); } public IImageResource imageResource() { return imageResource; } public AppenderBuilder imageResource(IImageResource imageResource) { this.imageResource = imageResource; return this; } public AppenderBuilder imageResource(String fileName) { return imageResource(new ImageResource(fileName)); } public AppenderBuilder imageResource(URL url) { return imageResource(new ImageResource(url)); } public AppenderBuilder imageResource(byte[] bytes) { return imageResource(new ImageResource(bytes)); } @Deprecated public Boolean inline() { return inline; } @Deprecated public AppenderBuilder inline(Boolean inline) { this.inline = inline; return this; } @Deprecated public AppenderBuilder inline(boolean inline) { return inline(inline ? Boolean.TRUE : Boolean.FALSE); } public TextPagesAppender buildPagesText() { return new TextPagesAppender(getFlag(), getAlign(), getVertical(), getMarginX(), getMarginY(), getPaddingLeft(), getPaddingTop(), getRotate(), getReadersFormat(), getFont(), getFontSize(), getKerned(), getColor()); } public TextPagesAppender buildPagesHeader() { return new TextPagesAppender(AppenderFlag.OVER, getAlign(), AppenderVertical.TOP, getMarginX(), getMarginY(), getPaddingLeft(), getPaddingTop(), getRotate(), getReadersFormat(), getFont(), getFontSize(), getKerned(), getColor()); } public TextPagesAppender buildPagesFooter() { return new TextPagesAppender(AppenderFlag.OVER, getAlign(), AppenderVertical.BOTTOM, getMarginX(), getMarginY(), getPaddingLeft(), getPaddingTop(), getRotate(), getReadersFormat(), getFont(), getFontSize(), getKerned(), getColor()); } public TextPageAppender buildPageText() { return new TextPageAppender(getFlag(), getAlign(), getVertical(), getMarginX(), getMarginY(), getPaddingLeft(), getPaddingTop(), getRotate(), getReadersFormat(), getFont(), getFontSize(), getKerned(), getColor()); } public TextPageAppender buildPageHeader() { return new TextPageAppender(AppenderFlag.OVER, getAlign(), AppenderVertical.TOP, getMarginX(), getMarginY(), getPaddingLeft(), getPaddingTop(), getRotate(), getReaderFormat(), getFont(), getFontSize(), getKerned(), getColor()); } public TextPageAppender buildPageFooter() { return new TextPageAppender(AppenderFlag.OVER, getAlign(), AppenderVertical.BOTTOM, getMarginX(), getMarginY(), getPaddingLeft(), getPaddingTop(), getRotate(), getReaderFormat(), getFont(), getFontSize(), getKerned(), getColor()); } public ImagePagesAppender buildPagesImage() { return new ImagePagesAppender(getFlag(), getAlign(), getVertical(), getMarginX(), getMarginY(), getPaddingLeft(), getPaddingTop(), getRotate(), getImageResource(), getInline()); } public ImagePagesAppender buildPagesBackground() { return new ImagePagesAppender(AppenderFlag.UNDER, getAlign(), getVertical(), getMarginX(), getMarginY(), getPaddingLeft(), getPaddingTop(), getRotate(), getImageResource(), getInline()); } public ImagePageAppender buildPageImage() { return new ImagePageAppender(getFlag(), getAlign(), getVertical(), getMarginX(), getMarginY(), getPaddingLeft(), getPaddingTop(), getRotate(), getImageResource(), getInline()); } public ImagePageAppender buildPageBackground() { return new ImagePageAppender(AppenderFlag.UNDER, getAlign(), getVertical(), getMarginX(), getMarginY(), getPaddingLeft(), getPaddingTop(), getRotate(), getImageResource(), getInline()); } protected AppenderFlag getFlag() { AppenderFlag ret = flag; if (ret == null) { ret = DEFAULT_FLAG; } return ret; } protected AppenderAlign getAlign() { AppenderAlign ret = align; if (ret == null) { ret = DEFAULT_ALIGN; } return ret; } protected AppenderVertical getVertical() { AppenderVertical ret = vertical; if (ret == null) { ret = DEFAULT_VERTICAL; } return ret; } protected float getMarginX() { Float ret = marginX; if (ret == null) { ret = DEFAULT_MARGIN_X; } return ret.floatValue(); } protected float getMarginY() { Float ret = marginY; if (ret == null) { ret = DEFAULT_MARGIN_Y; } return ret.floatValue(); } protected float getPaddingLeft() { Float ret = paddingLeft; if (ret == null) { ret = DEFAULT_PADDING_LEFT; } return ret.floatValue(); } protected float getPaddingTop() { Float ret = paddingTop; if (ret == null) { ret = DEFAULT_PADDING_TOP; } return ret.floatValue(); } protected String getReaderFormat() { String ret = format; if (ret == null) { ret = DEFAULT_READER_FORMAT; } return ret; } protected String getReadersFormat() { String ret = format; if (ret == null) { ret = DEFAULT_READERS_FORMAT; } return ret; } protected PDFont getFont() { PDFont ret = font; if (ret == null) { ret = DEFAULT_FONT; } return ret; } protected float getFontSize() { Float ret = fontSize; if (ret == null) { ret = DEFAULT_FONT_SIZE; } return ret.floatValue(); } protected boolean getKerned() { Boolean ret = kerned; if (ret == null) { ret = DEFAULT_KERNED; } return ret.booleanValue(); } protected Color getColor() { Color ret = color; if (ret == null) { ret = DEFAULT_COLOR; } return ret; } protected float getRotate() { Float ret = rotate; if (ret == null) { ret = DEFAULT_ROTATE; } return ret.floatValue(); } protected IImageResource getImageResource() { IImageResource ret = imageResource; if (ret == null) { ret = DEFAULT_IMAGE_RESOURCE; } return ret; } protected boolean getInline() { Boolean ret = inline; if (ret == null) { ret = DEFAULT_INLINE; } return ret.booleanValue(); } }