1
24 package net.sf.jasperreports.engine.export;
25
26 import net.sf.jasperreports.engine.JRPrintText;
27 import net.sf.jasperreports.engine.JasperReportsContext;
28 import net.sf.jasperreports.engine.type.RunDirectionEnum;
29 import net.sf.jasperreports.engine.util.JRStyledText;
30 import net.sf.jasperreports.export.pdf.PdfProducer;
31 import net.sf.jasperreports.export.pdf.PdfTextAlignment;
32
33
34
37 public abstract class AbstractPdfTextRenderer extends AbstractTextRenderer
38 {
39
42 protected JRPdfExporter pdfExporter;
43 protected PdfProducer pdfProducer;
44 protected PdfTextAlignment horizontalAlignment;
45 protected float leftOffsetFactor;
46 protected float rightOffsetFactor;
47
48
49
52 public AbstractPdfTextRenderer(
53 JasperReportsContext jasperReportsContext,
54 boolean ignoreMissingFont
55 )
56 {
57 this(jasperReportsContext, ignoreMissingFont, true, false);
58 }
59
60
61
64 public AbstractPdfTextRenderer(
65 JasperReportsContext jasperReportsContext,
66 boolean ignoreMissingFont,
67 boolean defaultIndentFirstLine,
68 boolean defaultJustifyLastLine
69 )
70 {
71 super(
72 jasperReportsContext,
73 false,
74 ignoreMissingFont,
75 defaultIndentFirstLine,
76 defaultJustifyLastLine
77 );
78 }
79
80
81
84 public void initialize(
85 JRPdfExporter pdfExporter,
86 PdfProducer pdfProducer,
87 JRPrintText text,
88 JRStyledText styledText,
89 int offsetX,
90 int offsetY
91 )
92 {
93 this.pdfExporter = pdfExporter;
94 this.pdfProducer = pdfProducer;
95
96 horizontalAlignment = PdfTextAlignment.LEFT;
97 leftOffsetFactor = 0f;
98 rightOffsetFactor = 0f;
99
100
101 switch (text.getHorizontalTextAlign())
102 {
103 case JUSTIFIED :
104 {
105 horizontalAlignment = PdfTextAlignment.JUSTIFIED;
106 leftOffsetFactor = 0f;
107 rightOffsetFactor = 0f;
108 break;
109 }
110 case RIGHT :
111 {
112 if (text.getRunDirectionValue() == RunDirectionEnum.LTR)
113 {
114 horizontalAlignment = PdfTextAlignment.RIGHT;
115 }
116 else
117 {
118 horizontalAlignment = PdfTextAlignment.LEFT;
119 }
120 leftOffsetFactor = -0.2f;
121 rightOffsetFactor = 0f;
122 break;
123 }
124 case CENTER :
125 {
126 horizontalAlignment = PdfTextAlignment.CENTER;
127 leftOffsetFactor = -0.1f;
128 rightOffsetFactor = 0.1f;
129 break;
130 }
131 case LEFT :
132 default :
133 {
134 if (text.getRunDirectionValue() == RunDirectionEnum.LTR)
135 {
136 horizontalAlignment = PdfTextAlignment.LEFT;
137 }
138 else
139 {
140 horizontalAlignment = PdfTextAlignment.RIGHT;
141 }
142 leftOffsetFactor = 0f;
143 rightOffsetFactor = 0.2f;
144 break;
145 }
146 }
147
148 super.initialize(text, styledText, offsetX, offsetY);
149 }
150
151 public abstract boolean addActualText();
152 }
153