85
90
return tableFilter;
94
public boolean supportsPrintPage(PrintPage dim) {
96
if (dim==null) { return false; }
97
if (type == EmbosserType.INDEX_BRAILLE_BOX_V4) {
98
Length across = dim.getLengthAcrossFeed();
99
Length along = dim.getLengthAlongFeed();
100
if (saddleStitchEnabled) {
101
return (across.asMillimeter() == 297 && along.asMillimeter() == 420) ||
102
(across.asInches() == 11 && along.asInches() == 17);
104
return (across.asMillimeter() == 297 && along.asMillimeter() == 210) ||
105
(across.asInches() == 11 && along.asInches() == 8.5) ||
106
(across.asInches() == 11 && along.asInches() == 11.5);
109
return super.supportsPrintPage(dim);
88
113
public EmbosserWriter newEmbosserWriter(OutputStream os) {
90
115
PageFormat page = getPageFormat();
130
private byte[] getIndexV3Header(boolean eightDots,
134
PrintPage page = getPrintPage(getPageFormat());
135
Length length = page.getLengthAlongFeed();
136
Length width = page.getLengthAcrossFeed();
155
private byte[] getIndexV4Header() {
143
157
StringBuffer header = new StringBuffer();
145
159
header.append((char)0x1b);
146
header.append("D"); // Activate temporary formatting properties of a document
147
header.append("BT0"); // Default braille table
148
header.append(",TD0"); // Text dot distance = 2.5 mm
149
header.append(",LS50"); // Line spacing = 5 mm
160
header.append("D"); // Activate temporary formatting properties of a document
161
header.append("BT0"); // Default braille table
162
header.append(",TD0"); // Text dot distance = 2.5 mm
163
header.append(",LS50"); // Line spacing = 5 mm
150
164
header.append(",DP");
151
if (saddleStitchEnabled) { header.append('4'); } else
152
if (zFoldingEnabled && duplex) { header.append('3'); } else
153
if (zFoldingEnabled) { header.append('5'); } else
154
if (duplex) { header.append('2'); } else
155
{ header.append('1'); } // Page mode
166
if (saddleStitchEnabled
167
&& !duplexEnabled) { header.append('8'); } else
168
// if (swZFoldingEnabled
169
// && !duplexEnabled) { header.append('7'); } else
170
// if (swZFoldingEnabled) { header.append('6'); } else
172
&& !duplexEnabled) { header.append('5'); } else
173
if (saddleStitchEnabled) { header.append('4'); } else
174
if (zFoldingEnabled) { header.append('3'); } else
175
if (duplexEnabled) { header.append('2'); } else
176
{ header.append('1'); } // Page mode
156
177
if (numberOfCopies > 1) {
157
178
header.append(",MC");
158
header.append(String.valueOf(numberOfCopies)); // Multiple copies
160
//header.append(",MI1"); // Multiple impact = 1
161
header.append(",PN0"); // No page number
163
case INDEX_BASIC_D_V4: {
164
iPart = Math.floor(length.asInches());
165
fPart = (length.asInches() - iPart);
166
xx = EmbosserTools.toBytes((int)iPart, 2);
167
if (fPart > 0.75) { xx = EmbosserTools.toBytes((int)(iPart + 1), 2);
169
if (fPart > 2d/3d) { y = '5'; } else
170
if (fPart > 0.5) { y = '4'; } else
171
if (fPart > 1d/3d) { y = '3'; } else
172
if (fPart > 0.25) { y = '2'; } else
173
if (fPart > 0) { y = '1'; } else
175
header.append(",PL");
176
header.append((char)xx[0]);
177
header.append((char)xx[1]);
178
header.append((char)y); // Paper length
180
iPart = Math.floor(width.asInches());
181
fPart = (width.asInches() - iPart);
182
xx = EmbosserTools.toBytes((int)iPart, 2);
183
if (fPart > 0.75) { xx = EmbosserTools.toBytes((int)(iPart + 1), 2);
185
if (fPart > 2d/3d) { y = '5'; } else
186
if (fPart > 0.5) { y = '4'; } else
187
if (fPart > 1d/3d) { y = '3'; } else
188
if (fPart > 0.25) { y = '2'; } else
189
if (fPart > 0) { y = '1'; } else
191
header.append(",PW");
192
header.append((char)xx[0]);
193
header.append((char)xx[1]);
194
header.append((char)y); // Paper width
197
case INDEX_EVEREST_D_V4: {
198
header.append(",PL");
199
header.append(String.valueOf(
200
(int)Math.ceil(length.asMillimeter()))); // Paper length
201
header.append(",PW");
202
header.append(String.valueOf(
203
(int)Math.ceil(width.asMillimeter()))); // Paper width
179
header.append(String.valueOf(numberOfCopies)); // Multiple copies
181
//header.append(",MI1"); // Multiple impact = 1
182
header.append(",PN0"); // No page number
208
183
header.append(",CH");
209
header.append(String.valueOf(cellsInWidth)); // Characters per line
210
header.append(",IM");
211
header.append(String.valueOf(marginInner)); // Inner margin
212
header.append(",OM");
213
header.append(String.valueOf(marginOuter)); // Outer margin
184
header.append(String.valueOf(getMaxWidth(getPageFormat()))); // Characters per line
185
header.append(",LP");
186
header.append(String.valueOf(getMaxHeight(getPageFormat()))); // Lines per page
187
header.append(",BI");
188
header.append(String.valueOf(bindingMargin)); // Binding margin
214
189
header.append(",TM");
215
header.append(String.valueOf(marginTop)); // Top margin
216
header.append(",BM");
217
header.append(String.valueOf(marginBottom)); // Bottom margin
190
header.append(String.valueOf(marginTop)); // Top margin
218
192
header.append(";");
220
194
return header.toString().getBytes();