| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- package commons.utility.spool;
- import java.awt.Color;
- import java.io.IOException;
- import commons.enumerate.AllineamentoCampoSpool_e;
- import commons.type.ModifyException;
- import commons.utility.field.tranf.PaddingModificator;
- import com.lowagie.text.DocumentException;
- import com.lowagie.text.pdf.BaseFont;
- import com.lowagie.text.pdf.PdfContentByte;
- public class BoundText implements IBound, IBoundWrite {
- /* nome attributi nel file XML */
- public final static String ATTR_X = "x";
- public final static String ATTR_Y = "y";
- public final static String ATTR_ALIGN = "a";
- public final static String ATTR_LEN = "l";
- public final static String ATTR_NAME = "nome";
-
- /* tipologia allineamento */
- public static final String CENTRATO = "c";
- public static final String SINISTRA = "s";
- public static final String DESTRA = "d";
- public final static char EMPTY_CHAR = ' ';
- private IPoint point;
- private IFont font;
- private int length;
- private AllineamentoCampoSpool_e alignment;
- private String name;
- private String valore;
- private float angle;
- private float charSpacing;
- private Color color;
- public Color getColor() {
- return color;
- }
- public void setColor(Color color) {
- this.color = color;
- }
- public BoundText(Point point,
- IFont font,
- int length,
- AllineamentoCampoSpool_e align,
- String name,
- String valore,
- float angle,
- float charSpacing,
- Color color) {
- setPoint(point);
- setFont(font);
- setLength(length);
- setAlignment(align);
- setName(name);
- setValue(valore);
- setCharSpacing(charSpacing);
- setAngle(angle);
- setColor(color);
- }
- public BoundText(Point point,
- IFont font,
- int length,
- AllineamentoCampoSpool_e align,
- String name,
- String valore) {
- this(point, font, length, align, name, valore, 0, 0, Color.BLACK);
- }
- public AllineamentoCampoSpool_e getAlignment() {
- return alignment;
- }
- public IPoint getPoint() {
- return point;
- }
- public int getLength() {
- return length;
- }
- public String getName() {
- return name;
- }
- public void setAlignment(AllineamentoCampoSpool_e spool_e) {
- alignment = spool_e;
- }
- public void setPoint(IPoint point) {
- this.point = point;
- }
- public void setFont(IFont font) {
- this.font = font;
- }
- public IFont getFont() {
- return font;
- }
- public void setLength(int i) {
- length = i;
- }
- public void setName(String string) {
- name = string;
- }
- public String getValue() {
- return valore;
- }
- public void setValue(String value) {
- valore = value;
- }
- public float getCharSpacing() {
- return charSpacing;
- }
- public void setCharSpacing(float charSpacing) {
- this.charSpacing = charSpacing;
- }
- public float getAngle() {
- return angle;
- }
- public void setAngle(float angle) {
- this.angle = angle;
- }
- public void write(PdfContentByte cb){
- String carat = formatText(this, getValue());
- BaseFont bf;
- try {
- if (font.getBaseFont() != null)
- {
- bf = font.getBaseFont();
- }
- else
- {
- bf = BaseFont.createFont(font.getFontName(), BaseFont.WINANSI, false);
- }
- cb.beginText();
- cb.setFontAndSize(bf, font.getFontHeight());
- cb.setCharacterSpacing(getCharSpacing());
- cb.setColorFill(color);
- cb.showTextAligned(PdfContentByte.ALIGN_LEFT,
- carat,
- point.getX(),
- point.getY(),
- angle);
- cb.endText();
- } catch (DocumentException e) {
- throw new RuntimeException( e );
- } catch (IOException e) {
- throw new RuntimeException( e );
- }
-
- }
- /**
- * Costruisce il testo da scrivere a seconda dell'allineamento
- * specificato
- * @param bound
- * @param value
- * @return
- */
- private String formatText(IBound bound, String value) {
- String ret = value;
- if ( bound.getAlignment()!= null
- &&
- !AllineamentoCampoSpool_e.NULLO.equals(bound.getAlignment()) ) {
- PaddingModificator pm = new PaddingModificator(PaddingModificator.Padding_e.LEFT,
- bound.getLength(),
- EMPTY_CHAR);
- switch (bound.getAlignment().getOrdinal()) {
- case AllineamentoCampoSpool_e.Values.CENTRATO:
- pm.setPadding(PaddingModificator.Padding_e.CENTER);
- break;
- case AllineamentoCampoSpool_e.Values.DESTRA:
- pm.setPadding(PaddingModificator.Padding_e.LEFT);
- break;
- case AllineamentoCampoSpool_e.Values.SINISTRA:
- pm.setPadding(PaddingModificator.Padding_e.RIGHT);
- break;
- }
- try {
- ret = pm.modify(value);
- } catch (ModifyException e) {
- ret = value;
- }
- }
- return ret;
- }
- /**
- * Traduce l'allineamento del file XML nel tipo
- * enumerato
- * @param align
- * @return
- */
- public static AllineamentoCampoSpool_e getAlign(String align){
- if (align.equalsIgnoreCase( CENTRATO ))
- return AllineamentoCampoSpool_e.CENTRATO;
- else if (align.equalsIgnoreCase( SINISTRA ))
- return AllineamentoCampoSpool_e.SINISTRA;
- else if (align.equalsIgnoreCase( DESTRA ))
- return AllineamentoCampoSpool_e.DESTRA;
- else
- return AllineamentoCampoSpool_e.NULLO;
- }
-
- public IAttributeList getAttributes() {
- return null;
- }
- }
|