1
24 package net.sf.jasperreports.engine.export;
25
26 import java.text.AttributedCharacterIterator;
27 import java.text.AttributedString;
28
29 import net.sf.jasperreports.engine.JRPrintText;
30 import net.sf.jasperreports.engine.JasperReportsContext;
31 import net.sf.jasperreports.engine.type.RunDirectionEnum;
32 import net.sf.jasperreports.engine.util.JRStyledText;
33 import net.sf.jasperreports.export.pdf.PdfPhrase;
34 import net.sf.jasperreports.export.pdf.PdfProducer;
35 import net.sf.jasperreports.export.pdf.PdfTextAlignment;
36 import net.sf.jasperreports.export.pdf.TextDirection;
37
38
39
42 public class SimplePdfTextRenderer extends AbstractPdfTextRenderer
43 {
44 private float yLine = 0;
45
46
49 public SimplePdfTextRenderer(
50 JasperReportsContext jasperReportsContext,
51 boolean ignoreMissingFont
52 )
53 {
54 this(jasperReportsContext, ignoreMissingFont, true, false);
55 }
56
57
58
61 public SimplePdfTextRenderer(
62 JasperReportsContext jasperReportsContext,
63 boolean ignoreMissingFont,
64 boolean defaultIndentFirstLine,
65 boolean defaultJustifyLastLine
66 )
67 {
68 super(
69 jasperReportsContext,
70 ignoreMissingFont,
71 defaultIndentFirstLine,
72 defaultJustifyLastLine
73 );
74 }
75
76
77 @Override
78 public void initialize(
79 JRPdfExporter pdfExporter,
80 PdfProducer pdfProducer,
81 JRPrintText text,
82 JRStyledText styledText,
83 int offsetX,
84 int offsetY
85 )
86 {
87 super.initialize(
88 pdfExporter,
89 pdfProducer,
90 text,
91 styledText,
92 offsetX,
93 offsetY
94 );
95
96 yLine =
97 pdfExporter.getCurrentPageFormat().getPageHeight()
98 - y
99 - topPadding
100 - verticalAlignOffset
101 - text.getLeadingOffset();
102 }
103
104
105 @Override
106 public void render()
107 {
108 super.render();
109 }
110
111
112 @Override
113 protected void renderParagraph(
114 AttributedCharacterIterator allParagraphs,
115 int paragraphStart,
116 String paragraphText
117 )
118 {
119 AttributedString paragraph = null;
120
121 if (paragraphText == null)
122 {
123 paragraphText = " ";
124 paragraph =
125 new AttributedString(
126 paragraphText,
127 new AttributedString(
128 allParagraphs,
129 paragraphStart,
130 paragraphStart + paragraphText.length()
131 ).getIterator().getAttributes()
132 );
133 }
134 else
135 {
136 paragraph =
137 new AttributedString(
138 allParagraphs,
139 paragraphStart,
140 paragraphStart + paragraphText.length()
141 );
142 }
143
144 PdfPhrase phrase = pdfProducer.createPhrase();
145 pdfExporter.getPhrase(paragraph, paragraphText, text, phrase);
146 yLine = phrase.go(
147 x + leftPadding,
148 yLine,
149 x + width - rightPadding,
150 pdfExporter.getCurrentPageFormat().getPageHeight()
151 - y
152 - height
153 + bottomPadding,
154 0,
155 text.getLineSpacingFactor(),
156 horizontalAlignment == PdfTextAlignment.JUSTIFIED && (isLastParagraph && justifyLastLine)
157 ? PdfTextAlignment.JUSTIFIED_ALL : horizontalAlignment,
158 text.getRunDirectionValue() == RunDirectionEnum.LTR
159 ? TextDirection.LTR : TextDirection.RTL
160 );
161 }
162
163
164 @Override
165 protected AttributedString getAttributedString()
166 {
167 return styledText.getAttributedString();
168 }
169
170
171 @Override
172 public void draw()
173 {
174
175 }
176
177
178 @Override
179 public boolean addActualText()
180 {
181 return false;
182 }
183 }
184